Java list與Python list相比較 Java List:有序的,可重覆的。(有序指的是集合中對象的順序與添加順序相同) Python list(列表)是有序的,可變的。 Java List分類: ArrayList:底層使用數組,線程不安全,查找速度快,增刪速度慢 在迭代過程中,對集合 ...
Java list與Python list相比較
Java List:有序的,可重覆的。(有序指的是集合中對象的順序與添加順序相同)
Python list(列表)是有序的,可變的。
Java List分類:
---ArrayList:底層使用數組,線程不安全,查找速度快,增刪速度慢
在迭代過程中,對集合對象的增刪會出現異常
---LinkedList:底層使用鏈表,線程不安全,查找速度慢,增刪速度快
後進先出,類似於棧
---Vector: 底層使用數組,線程安全,查找速度快,增刪速度慢,被ArrayList替代
Python 列表無分類,list是Python的基本數據結構。
方法 | Java List | Python list:[1,'2',3] | Python tuple:(1,2,3) |
增加到末尾 | boolean add(E e); | list.append('大帝') | 不可變 |
增加到指定位置 | void add(int index, E element); | list.insert(2,'大帝') | 不可變 |
長度 | int size(); | len(list) | 與list相同 |
更新 | E set(int index, E element); | list[i]='大帝' | 不可變 |
刪除 | E remove(int index); | list.pop(i) | 不可變 |
刪除所有 | void clear(); | list.clear() | 不可變,可以使用del刪除元組 |
查找 | E get(int index); | list[i] | 與list相同 |
Java Map與Python dict相比較
Java Map屬於集合,但不屬於Collection體系中一部分,無序的,不可重覆,以鍵值對形式存在。
Python dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)存儲,具有極快的查找速度,dict的key必須是不可變對象,因為dict根據key使用哈希演算法來計算value的存儲位置。
Java Map分類:
--- HashMap:底層使用的數據結構是哈希表
保持鍵的唯一性同HashSet相同。
--- TreeMap:底層使用的數據結構是二叉樹
保持鍵的唯一性同TreeSet相同。
Python 字典無分類,dict是Python的基本數據結構。
方法 | Java Map | Python dict:{'1':'1','2':'2'} |
增加 | V put(K key, V value); | dict['1']='大帝' |
刪除 | V remove(Object key); | del dict['1'] |
更改 | 和增加相同,若鍵相同,會覆蓋原值 | dict['1']='國王' |
查找 | V get(Object key); | dict['1'] |
Java Set與Python set相比較
Java Set底層使用的就是Java Map的鍵,值被設置為空,因此Set與Map保持唯一性的原理是相同的。
Python set和dict類似,也是一組key的集合,但不存儲value。由於key不能重覆,所以,在set中,沒有重覆的key。
Java Set:無序,不可重覆
---HashSet:底層使用哈希表,線程不安全
保證對象唯一的方式:重寫hashcode(),equals(Object obj).使用哈希演算法導致無序
---TreeSet:底層使用二叉樹,線程不安全
在使用add方法添加對象時,會對加入集合的對象進行排序
保證對象唯一的方式:1 實現Comparable<E>介面,實現compareTo()方法的返回值是0,則不能加入。2 創建一個類,實現Comparator<T>,實現compare() 方法。
Python 集合無分類,set是Python的基本數據結構。
方法 | Java Set | Python set |
創建 | 傳入一個list:set([1,2,3])或者直接s={1,2,3} | |
增加 | boolean add(E e); | s.add(4) |
刪除 | boolean remove(Object o); | s.remove(4)/s.pop() |
更新 | 談不上更新 | 談不上更新 |