您現在的位置是:首頁 >要聞 > 2023-08-13 05:30:12 來源:
java集合有哪些(java集合)
大家好,我是小華,我來為大家解答以上問題。java集合有哪些,java集合很多人還不知道,現在讓我們一起來看看吧!
1、總的說來,Java API中所用的集合類,都是實現了Collection接口,他的一個類繼承結構如下: Collection<--List<--Vector Collection<--List<--ArrayList Collection<--List<--LinkedList Collection<--Set<--HashSet Collection<--Set<--HashSet<--LinkedHashSet Collection<--Set<--SortedSet<--TreeSet Vector : 基于Array的List,其實就是封裝了Array所不具備的一些功能方便我們使用,它不可能走入Array的限制。
2、性能也就不可能超越Array。
3、所以,在可能的情況下,我們要多運用Array。
4、另外很重要的一點就是Vector“sychronized”的,這個也是Vector和ArrayList的唯一的區別。
5、 ArrayList:同Vector一樣是一個基于Array上的鏈表,但是不同的是ArrayList不是同步的。
6、所以在性能上要比Vector優越一些,但是當運行到多線程環境中時,可需要自己在管理線程的同步問題。
7、 LinkedList:LinkedList不同于前面兩種List,它不是基于Array的,所以不受Array性能的限制。
8、它每一個節點(Node)都包含兩方面的內容:1.節點本身的數據(data);2.下一個節點的信息(nextNode)。
9、所以當對LinkedList做添加,刪除動作的時候就不用像基于Array的List一樣,必須進行大量的數據移動。
10、只要更改nextNode的相關信息就可以實現了。
11、這就是LinkedList的優勢。
12、 List總結: 1. 所有的List中只能容納單個不同類型的對象組成的表,而不是Key-Value鍵值對。
13、例如:[ tom,1,c ]; 2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ]; 3. 所有的List中可以有null元素,例如[ tom,null,1 ]; 4. 基于Array的List(Vector,ArrayList)適合查詢,而LinkedList(鏈表)適合添加,刪除操作。
14、 HashSet:雖然Set同List都實現了Collection接口,但是他們的實現方式卻大不一樣。
15、List基本上都是以Array為基礎。
16、但是Set則是在HashMap的基礎上來實現的,這個就是Set和List的根本區別。
17、HashSet的存儲方式是把HashMap中的Key作為Set的對應存儲項。
18、看看HashSet的add(Object obj)方法的實現就可以一目了然了。
19、 public boolean add(Object obj) { return map.put(obj, PRESENT) == null; } 這個也是為什么在Set中不能像在List中一樣有重復的項的根本原因,因為HashMap的key是不能有重復的。
20、 LinkedHashSet:HashSet的一個子類,一個鏈表。
21、 TreeSet:SortedSet的子類,它不同于HashSet的根本就是TreeSet是有序的。
22、它是通過SortedMap來實現的。
23、 Set總結: 1. Set實現的基礎是Map(HashMap); 2. Set中的元素是不能重復的,如果使用add(Object obj)方法添加已經存在的對象,則會覆蓋前面的對象;。
本文到此講解完畢了,希望對大家有幫助。