map是和collection同級 的容器
map放置 元素是以:key-value的結構存在
重點掌握hasmap hashtable
1.hasmap
* hashmap 底層結構:陣列+單項鍊表結構,陣列中主要存放鍵的hash值,
* 而鍊錶中主要儲存k-v結構的資料
* * 在向hashmap加資料的時候:
* 先比較hash值,看hash是否在hash表中存在
* 存在
* 比較key值是否相同,
* 不同直接新增新的資料
* 相同替換value值
* 不存在
* 直接新增新的資料
* * 陣列構成了hashmap中的hash表,預設大小16 可以存放16*0.75個
* 超過這個資料,hash將會重建自動擴容 並陣列擴大2倍
**示例:
hashmapmap = new hashmap();
map.put("9527", new personbean("張三"));
map.put("9528", new dogbean("來福"));
//map中可以存放null
map.put(null, null);
//鍵值不會一樣 再次新增乙個同樣的鍵 將替換原先value中的值
map.put("9527", new personbean("打包"));
//獲取map中的value
system.out.println(map.get("9527"));
/** 我們自定義物件,在作為key的時候一般都需要重寫hashcode()
* 其目的在與做到hashmap中去重
*///hashmap中的鍵,還可以放我們自定義的物件
map.put(new personbean("1號", "9527", 1), "它的名字11");
map.put(new personbean("2號", "9527", 1), "它的名字112");
//獲取map中所有的鍵 並返回乙個set物件
system.out.println(map.keyset());
//獲取map中的所有k-v 並返回set>
system.out.println(map.entryset());
//判斷在hashmap中是否存在這個鍵
system.out.println(map.containskey("9527"));
/** 在hashmap查詢鍵是否存在,
* 找到返回對應value值
* 沒找到返回乙個預設值 例如下:123456
* */
system.out.println(map.getordefault("111",123456));
//移除某個鍵-值
map.remove("9527");
system.out.println(map.containsvalue("9527"));
2.hashtable* hashtable 和 hashmap 底層一樣,區別在於hashtable是執行緒安全的
* hashmap 可以存放空值空鍵
* hashtable 不可以存放空值空鍵
**示例:
hashtableht = new hashtable();
// ht.put(null, null); //nullpointerexception
queeue是map和collection同級 的容器
* queue佇列 也是可以存放東西的容器
* * 它存放的方式:先進先出 類似於排隊
* * 佇列應用場景:
* 1.多執行緒之間資料互動
* 2.多系統之間資料互動
**示例:
queuequeue = new arrayblockingqueue(5);
queue.add(1);
queue.add(2);
queue.add(3);
queue.add(4);
queue.add(5);
// queue.add(12);//illegalstateexception: queue full
//獲取佇列中的元素格式
system.out.println(queue.size());
//遍歷 for foreach 迭代器
for (object object : queue)
while(true)
//讀取佇列第乙個並刪除
system.out.println(queue.poll());
}
自然排序:
凡是實現comparable介面 的排序 都稱為自然排序
listdatas = new arraylist();
datas.add(10);
datas.add(25);
datas.add(3);
datas.add(4);
datas.add(99);
system.out.println(arrays.tostring(datas.toarray()));
//指定交換位置
collections.swap(datas, 0, 2);
system.out.println(arrays.tostring(datas.toarray()));
//string... === string
// collections.addall(datas,"j");
system.out.println(arrays.tostring(datas.toarray()));
//取出最大值
system.out.println(collections.max(datas));
//預設按照公升序排列
collections.sort(datas);
system.out.println(arrays.tostring(datas.toarray()));
//降序排列
//集合反轉
collections.reverse(datas);
system.out.println(arrays.tostring(datas.toarray()));
自定義排序:
* 自己去寫排序規則
* 自定義排序和自然排序的區別:
* 自然排序需要集合中的元素實現comparable,並重寫方法comparto()
* * 自定義排序不需要集合中的元素實現comparable
* * 比較器需要實現comparator介面,並重寫compare();
**示例:
listdatas = new arraylist();
datas.add(10);
datas.add(25);
datas.add(3);
datas.add(4);
datas.add(99);
system.out.println(arrays.tostring(datas.toarray()));
//自定義降序
collections.sort(datas,new comparator() else if(o1 -o2 < 0) else
}});
system.out.println(arrays.tostring(datas.toarray()));
**示例:
integer arr = ;
//陣列複製
integer arr01 = arrays.copyof(arr, arr.length);
integer arr02 = arrays.copyofrange(arr, 0, 1);
system.out.println(arrays.deeptostring(arr));
system.out.println(arrays.tostring(arr));
arrays.spliterator(arr).foreachremaining(new consumer()
});//陣列和list互相轉換
listdatas = arrays.aslist(arr);
collections.reverse(datas);
system.out.println(arrays.tostring(datas.toarray()));
通常和***.properties 檔案結合起來使用
**示例:
properties p = new properties();
p.put("9524",11);
java集合框架
集合框架包括集合與對映 collection and map 以及它們的子類 容器類 1 list 元素有先後次序的集合,元素有index位置,元素可以重複,繼承自collection介面,實現類 arraylist,vector,linkedlist 2 set 元素無續,不能重複新增,是數學意義...
java集合框架
框架 為了解決某一特定的問題,預先設計好的一系列具有繼承或實現關係的類的介面。集合裡的三大類 list直接繼承collection 特點 線性,有序 arraylist底層的實現是陣列 使用範圍 當某一陣列在實際應用中大量使用查詢和新增功能的時候用arraylist linkedlist底層的實現是...
java 集合框架
集合一般使用list,set,map首先說下list 1.list一般使用arraylist,linkedlist list的特點有序,重複,那麼arraylist和linkedlist的區別 arraylist插入和刪除資料慢,取值速度快,實際上arraylist是陣列的擴充 linkedlist...