java list map 部分筆記

// -------------------------------------------------------------------------------------------------

// 接口
Iterator iterator = null;
//iterator.hasNext();
//iterator.next();
//iterator.remove();

Collection collection = null;
//collection.isEmpty();

// List是一種有序集合 List接口的實現類主要有ArrayList,LinkedList,Vector,Stack等
List list = null;
// 集合中的對象不按照特定的方式排序
Set set = null;

// 實現 HashSet和TreeSet繼承AbstractSet 實現Set.
//  HashSet類按照哈希算法來存取集合中的對象,具有很好的存取性能。
//  當HashSet向集合中加入一個對象時,會調用對象的hashCode()方法獲取哈希碼,然後根據這個哈希碼進一步計算出對象在集合中的存放位置。
// 實際上是一個HashMap實例. 繼承Set. 集合中的對象不按照特定的方式排序.
HashSet hashSet = null;
// TreeSet實現了SortedSet接口,可以對集合中的元素排序。
TreeSet treeSet = null;

// ArrayList實現了可變大小的數組。它允許所有元素,包括null。ArrayList沒有同步。size,isEmpty,get,set方法運行時間爲常數。
// 但是add方法開銷爲分攤的常數,添加n個元素需要O(n)的時間。其他的方法運行時間爲線性。
//  每個ArrayList實例都有一個容量(Capacity),即用於存儲元素的數組的大小。
//  這個容量可隨着不斷添加新元素而自動增加,但是增長算法並沒有定義。
//  當需要插入大量元素時,在插入前可以調用ensureCapacity方法來增加ArrayList的容量以提高插入效率。
// 默認數組大小爲10, 主要方法 add set get iterator
// 每次擴容是原來的1。5倍,當不夠存儲時,進行擴容。Arrays.copyOf(elementData, size,class)
ArrayList arrayList = new ArrayList();

// Collections.sort(List list):對List的元素進行自然排序
// Collections.sort(List list, Comparator comparator):對List中的元素進行客戶化排序
// 默認按ASCII碼排序
Collections.sort(arrayList);

// LinkedList實現了List接口,允許null元素。此外LinkedList提供額外的get,remove,insert方法在LinkedList的首部或尾部。
// 這些操作使LinkedList可被用作堆棧(stack),隊列(queue)或雙向隊列(deque)。
// 注意LinkedList沒有同步方法。如果多個線程同時訪問一個List,則必須自己實現訪問同步。
// 一種解決方法是在創建List時構造一個同步的List:List list = Collections.synchronizedList(new LinkedList(...));
LinkedList linkedList =  null;

// treemap 和 trppset 比較
TreeMap treeMap = null;
TreeSet treeSet1 = null;
// 與HashSet完全類似,TreeSet裏面絕大部分方法都市直接調用TreeMap方法來實現的。

// 相同點:
// TreeMap和TreeSet都是有序的集合,也就是說他們存儲的值都是拍好序的。
// TreeMap和TreeSet都是非同步集合,因此他們不能在多線程之間共享,不過可以使用方法Collections.synchroinzedMap()來實現同步
// 運行速度都要比Hash集合慢,他們內部對元素的操作時間複雜度爲O(logN),而HashMap/HashSet則爲O(1)。
// 不同點:
// 最主要的區別就是TreeSet和TreeMap非別實現Set和Map接口
// TreeSet只存儲一個對象,而TreeMap存儲兩個對象Key和Value(僅僅key對象有序)
// TreeSet中不能有重複對象,而TreeMap中可以存在

 

Map map5 = null;
ConcurrentHashMap map = new ConcurrentHashMap(16, 0.75F);
map.forEach( (k, v) -> {
    System.out.println(k + "-" + v);
} );

HashMap hashMap = new HashMap();
int hashcode = hashMap.hashCode();
hashMap.forEach((k, v) -> {
    System.out.println(k + "-" + v);
});

Hashtable hashtable = null;
System.out.println(1 << 30);

// 數據n是否冪等
int n = 257;
if((n & (n-1)) == 0) {
    System.out.println("is m");
} else {
    System.out.println("is not m");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章