java 类集合_java集合类详解
一、集合類與數組的區別
1.集合的長度可變,數組的長度固定;
2.集合用來存放對象引用,數組用來存放基本類型的數據;
二、集合類的關系
1.Collection接口
存儲一組不唯一、無序的對象。
2.List接口
存儲一組不唯一、有序(插入順序)的對象。
2.1 實現類:ArrayList類、LinkedList類
ArrayList類:實現長度可變的數組,在內存中分配連續的空間,遍歷元素和隨機訪問元素的效率較高。
add()? addAll()? clear()? size()? iterator()? get()? set()
LinkedList類:采用鏈表存儲方式,插入、刪除元素時效率較高。
add()? addAll()? addFirst()? addLast()? clear()? remove()? size()? iterator()? get()? set()
3.Set接口
存儲一組唯一、無序的對象。
唯一性:在添加對象時,會先采用對象的equals()方法與當前已有的對象的HashCode進行比較(重寫了equals()方法的除外),如果沒有相同的對象,則添加新的對象。
無序性:沒有get()方法,無法通過下標遍歷Set集合。
遍歷set集合方法:
3.1 通過迭代器Iterator
public static voidmain(String[] args){
Set set= newHashSet();
set.add("c");
set.add("a");
set.add("c");
set.add("b");
Iterator it =set.iterator();while(it.hasNext()) {
String str=(String) it.next();
System.out.print(str + " ");
}
}
輸出結果:a b c
3.2 增強型for循環
public static voidmain(String[] args) {
Set set = new HashSet();
set.add("c");
set.add("a");
set.add("c");
set.add("b");for(Object obj : set) {
String str=(String) obj;
System.out.println(str);
}
}
輸出結果:a b c
4.Map接口
存儲一組鍵值對象,提供key到value的映射。
輸出所有的key值:keySet()方法,返回鍵的Set視圖;
輸出所有的values值:values()方法,返回值的Collection視圖;
獲得所有的鍵值對:entrySet()方法,返回鍵值對的Set視圖。
public static voidmain(String[] args) {
Map map = new HashMap<>();
map.put("java", "課堂學習");
map.put("Html", "視頻學習");//獲得所有鍵值對的集合
Set> entrySet =map.entrySet(); // 集合中對象的類型為Map.Entry
// 方法一:通過增強型for循環for(Map.Entry entry : entrySet) {
String key=entry.getKey().toString();
String value=entry.getValue().toString();
System.out.println(key+ "---" +value);
}
// 方法二:通過迭代器Iterator
Iterator> it1;
it1 = entrySet.iterator();
while(it1.hasNext()){
Map.Entry me = it1.next();
String key1 = me.getKey();String value1 = me.getValues();
System.out.println(key1 + "---" + value1);
}Iteratorit;
System.out.println("key值:");//獲得所有鍵的集合
Set set =map.keySet(); // 集合中對象的類型為String
it=set.iterator();while(it.hasNext()) {
System.out.print(it.next()+ "\t");
}
System.out.println("\nvalues值:");//獲得所有值的集合
Collection coll =map.values(); // 集合中對象的類型為String
it=coll.iterator();while(it.hasNext()) {
System.out.print(it.next()+ "\t");
}}
4.1 實現類
HashMap、Hashtable、LinkedHashMap和TreeMap
HashMap
HashMap是最常用的Map,它根據鍵的HashCode值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度,遍歷時,取得數據的順序是完全隨機的。因為鍵對象不可以重復,所以HashMap最多只允許一條記錄的鍵為Null,允許多條記錄的值為Null,是非同步的。
Hashtable
Hashtable與HashMap類似,是HashMap的線程安全版,它支持線程的同步,即任一時刻只有一個線程能寫Hashtable,因此也導致了Hashtale在寫入時會比較慢,它繼承自Dictionary類,不同的是它不允許記錄的鍵或者值為null,同時效率較低。
ConcurrentHashMap
線程安全,并且鎖分離。ConcurrentHashMap內部使用段(Segment)來表示這些不同的部分,每個段其實就是一個小的HashTable,它們有自己的鎖。只要多個修改操作發生在不同的段上,它們就可以并發進行。
LinkedHashMap
LinkedHashMap保存了記錄的插入順序,在用Iteraor遍歷LinkedHashMap時,先得到的記錄肯定是先插入的,在遍歷的時候會比HashMap慢,有HashMap的全部特性。
TreeMap
TreeMap實現SortMap接口,能夠把它保存的記錄根據鍵排序,默認是按鍵值的升序排序(自然順序),也可以指定排序的比較器,當用Iterator遍歷TreeMap時,得到的記錄是排過序的。不允許key值為空,非同步的。
總結
以上是生活随笔為你收集整理的java 类集合_java集合类详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rpm mysql 忘记密码_mysql
- 下一篇: 正态分布概率表_三、统计概率思维