您好,登錄后才能下訂單哦!
小編給大家分享一下Java集合類知識(shí)點(diǎn)有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
集合:只能存儲(chǔ)對(duì)象,對(duì)象類型可以不一樣,長度可變。
常用的接口和類:
1、List接口(有序、可重復(fù)):ArrayList類、LinkedList、Vector類
2、Set接口(無序、不能重復(fù)):HashSet類、TreeSet類
3、Map接口(鍵值對(duì)、鍵唯一、值不唯一):HashMap類、Hashtable類、TreeMap類
集合類的循環(huán)遍歷
1、普通for循環(huán):如 for(int i=0;i<arr.size();i++){…}
2、foreach(增強(qiáng)型for循環(huán)):如 for(Object i:arr){…}
3、Iterator(迭代器):如 Iterator it = arr.iterator();while(it.hasNext()){ Object o =it.next(); …}
注意:無法在遍歷的過程中對(duì)數(shù)組或者集合進(jìn)行修改,而for循環(huán)可以在遍歷的過程中對(duì)源數(shù)組或者集合進(jìn)行修改
ArrayList、LinkedList和Vector的區(qū)別
ArrayList:效率高,多用于查詢
LinkedList:多用于插入和刪除
Vector:線程安全,多用于查詢
代碼:
import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Vector; public class ListTest { public static void main(String[] args){ List arrayList=new ArrayList(); List linkedList=new LinkedList(); List vector=new Vector(); arrayList.add("1"); //字符類型 arrayList.add("1"); //重復(fù)元素 arrayList.add("2"); arrayList.add(1); //數(shù)字類型 linkedList.add("1"); linkedList.add("1"); linkedList.add("2"); linkedList.add(1); vector.add("1"); vector.add("1"); vector.add("2"); vector.add(1); for(Object obj:arrayList){ //foreach循環(huán) System.out.println(obj); } for(int i=0;i<linkedList.size();i++){ //普通for循環(huán) System.out.println(arrayList.get(i)); } Iterator it = vector.iterator(); //迭代器 while(it.hasNext()){ Object j=it.next(); System.out.println(j); } } }
HashSet和TreeSet的區(qū)別
HashSet:HashSet 是哈希表實(shí)現(xiàn)的,HashSet中的數(shù)據(jù)是無序的,可以放入null,但只能放入一個(gè)null
TreeSet:TreeSet是二差樹實(shí)現(xiàn)的,Treeset中的數(shù)據(jù)是自動(dòng)排好序的,不允許放入null值
代碼:
public class SetTest { public static void main(String[] args){ Set hashSet=new HashSet(); Set treeSet=new TreeSet(); hashSet.add("1"); //字符類型 hashSet.add("1"); //重復(fù)元素 hashSet.add("2"); hashSet.add(1); //數(shù)字類型 treeSet.add("1"); treeSet.add("1"); treeSet.add("2"); // treeSet.add(1); //報(bào)錯(cuò),treeSet不能添加不同的數(shù)據(jù)類型 for(Object i:hashSet){ //foreach循環(huán) System.out.println(i); } Iterator it = treeSet.iterator(); //迭代器 while(it.hasNext()){ Object j=it.next(); System.out.println(j); } } }
注意:Set接口沒有g(shù)et方法,所以不能使用普通for循環(huán)來遍歷
HashMap、Hashtable和TreeMap的區(qū)別
HashMap:HashMap允許存在一個(gè)為null的key,多個(gè)為null的value
Hashtable:hashtable的key和value都不允許為null
TreeMap:能夠把它保存的記錄根據(jù)鍵排序,默認(rèn)是按鍵值的升序排序,也可以指定排序的比較器,當(dāng)用Iterator 遍歷TreeMap時(shí),得到的記錄是排過序的
代碼:
import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class MapTest { public static void main(String[] args){ Map hashMap=new HashMap(); Map hashtable=new Hashtable(); Map treeMap=new TreeMap(); hashMap.put(1, "1"); //字符類型值 hashMap.put(2, "1"); //同值不同鍵 hashMap.put(3, "2"); hashMap.put(4, 1); //數(shù)字類型值 hashMap.put("5", 1); //字符類型鍵 hashtable.put(1, "1"); hashtable.put(2, "1"); hashtable.put(3, "2"); hashtable.put(4, 1); hashtable.put("5", 1); treeMap.put(1, "1"); treeMap.put(2, "1"); treeMap.put(5, "2"); treeMap.put(4, 1); // treeMap.put("5", 1); //報(bào)錯(cuò),TreeMap不能添加不同類型的鍵 //遍歷hashMap鍵 for(Object key:hashMap.keySet()){ System.out.println(key); } //遍歷hashtable值 for(Object value:hashtable.values()){ System.out.println(value); } //遍歷hashMap鍵值對(duì) Set set = hashMap.keySet(); for(Iterator iter = set.iterator(); iter.hasNext();){ Object key = iter.next(); Object value = hashMap.get(key); System.out.println(key+"\t"+value); } //迭代遍歷hashtable鍵值對(duì),倒序! Iterator table = hashtable.entrySet().iterator(); while(table.hasNext()){ Map.Entry entry = (Map.Entry) table.next(); Object key = entry.getKey(); //取鍵 Object value = entry.getValue(); //取值 System.out.println(key+"\t"+value); } //迭代遍歷treeMap鍵值對(duì) Iterator tmp = treeMap.entrySet().iterator(); while(tmp.hasNext()){ Map.Entry entry = (Map.Entry) tmp.next(); Object key = entry.getKey(); //取鍵 Object value = entry.getValue(); //取值 System.out.println(key+"\t"+value); } } }
關(guān)于線程安全的類有:Vecto、HashTabl、StringBuffe
非線程安全:ArrayList 、LinkedList、HashMap、HashSet、TreeMap、TreeSet、StringBulider
注意:ConcurrentHashMap可代替HashMap用于線程安全,且效率比Hashtable高
java自身的機(jī)制并不能完全保證線程安全。需要自己手動(dòng)編碼控制。
以上是“Java集合類知識(shí)點(diǎn)有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。