初學java,單個的接觸有點迷糊,所以總結下他們的關系
一、關系
collection
--list:以特定順序存儲
--arraylist、linklist、vector
--set:不能包含重復的元素
--hashset、treeset
map
--hashmap、hashtable、treemap
二、分別講解
collection:collection是一個父接口,list和set是繼承自他的子接口,collection是最基本的集合接口,java sdk中不提供直接繼承自collection的類,而是提供繼承自他子接口的類,如list何set。所用的collection類都支持一個iterator()
方法來遍歷。
list:list接口是有序的,會精確的將元素插入到指定的位置,和下面的set接口不同,list接口允許有相同元素
arraylist:實現可變大小的數組,允許所有的元素,不是同步的,也就是沒有同步方法
linklist:允許null元素,通常在首部或者尾部操作,所以常被使用做堆棧(stack)、隊列(queue)和雙向隊列(deque)
vector:類似于arraylist,但vector是同步的,stack繼承自vector
set:是一種不包含重復元素的collection接口
hashset:不能有重復元素,底層是使用hashmap來實現的
map:此接口實現的key到value的映射,一個map中不能包含相同的key,每個key只能映射一個value
hashtable:實現了一個key-value的哈希表,每一個非null元素都可作為key或者value,hashtable是同步的
hashmap:和hashtable的不同之處是,非同步的,且允許null元素的存在
三、array和arrays collection和collections
array:是所以隨機訪問一串對象中,最有效率的一種,但是元素類型必須相同,且容量固定無法改變。
arrays:此靜態類專門操作array,提供搜索、排序、復制等靜態方法
collection:java.util下的一個接口,是各種集合結構的父接口
collections:java.util下的一個專用靜態類,他包含各種集合操作的靜態方法,包括對集合的搜索、排序、線程安全等操作。
四、總結
涉及到堆棧、隊列等操作,使用list接口,快速插入和刪除應使用linklist,隨機訪問元素使用arraylist
單線程使用非同步類,多線程使用同步類
注意對hashtable的操作,作為key的對象要覆寫equals和hashcode方法
在各種map中hashmap用于快速查找
最長使用的是arraylist、hashset、hashmap、array
下面是一個找出元素字符串數組中最長字符串的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package collection; import java.util.arrays; import java.util.collections; import java.util.comparator; import java.util.list; public class masstring { public static void main(string args []){ string str[] = new string[]{ "zhans" , "lis" , "wangwt" , "quliu" }; list<string> list = arrays.aslist(str); string max = collections.max(list, new strsort()); // collections靜態函數的使用 system.out.println( "max: " +max); } } class strsort implements comparator<string>{ <span style= "white-space:pre" > </span> // 一個比較器重新定義 public int compare(string s1, string s2){ if (s1.length() < s2.length()){ return - 1 ; } if (s1.length() < s2.length()){ return s1.compareto(s2); } else return 1 ; } } |
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
原文鏈接:https://blog.csdn.net/jinhuoxingkong/article/details/51225641