Java中Collection、List、Set、Map之間的關(guān)系總結(jié)
初學(xué)java,單個(gè)的接觸有點(diǎn)迷糊,所以總結(jié)下他們的關(guān)系
一、關(guān)系
Collection
--List:以特定順序存儲(chǔ)
--ArrayList、LinkList、Vector
--Set:不能包含重復(fù)的元素
--HashSet、TreeSet
Map
--HashMap、HashTable、TreeMap
二、分別講解
Collection:Collection是一個(gè)父接口,List和Set是繼承自他的子接口,Collection是最基本的集合接口,Java SDK中不提供直接繼承自Collection的類,而是提供繼承自他子接口的類,如List何Set。所用的Collection類都支持一個(gè)Iterator()方法來(lái)遍歷。
List:List接口是有序的,會(huì)精確的將元素插入到指定的位置,和下面的Set接口不同,List接口允許有相同元素
ArrayList:實(shí)現(xiàn)可變大小的數(shù)組,允許所有的元素,不是同步的,也就是沒(méi)有同步方法
LinkList:允許null元素,通常在首部或者尾部操作,所以常被使用做堆棧(stack)、隊(duì)列(queue)和雙向隊(duì)列(deque)
Vector:類似于ArrayList,但Vector是同步的,Stack繼承自Vector
Set:是一種不包含重復(fù)元素的Collection接口
HashSet:不能有重復(fù)元素,底層是使用HashMap來(lái)實(shí)現(xiàn)的
Map:此接口實(shí)現(xiàn)的Key到Value的映射,一個(gè)Map中不能包含相同的Key,每個(gè)Key只能映射一個(gè)Value
HashTable:實(shí)現(xiàn)了一個(gè)Key-Value的哈希表,每一個(gè)非null元素都可作為Key或者Value,HashTable是同步的
HashMap:和HashTable的不同之處是,非同步的,且允許null元素的存在
三、Array和Arrays Collection和Collections
Array:是所以隨機(jī)訪問(wèn)一串對(duì)象中,最有效率的一種,但是元素類型必須相同,且容量固定無(wú)法改變。
Arrays:此靜態(tài)類專門(mén)操作array,提供搜索、排序、復(fù)制等靜態(tài)方法
Collection:Java.util下的一個(gè)接口,是各種集合結(jié)構(gòu)的父接口
Collections:Java.util下的一個(gè)專用靜態(tài)類,他包含各種集合操作的靜態(tài)方法,包括對(duì)集合的搜索、排序、線程安全等操作。
四、總結(jié)
涉及到堆棧、隊(duì)列等操作,使用List接口,快速插入和刪除應(yīng)使用LinkList,隨機(jī)訪問(wèn)元素使用ArrayList
單線程使用非同步類,多線程使用同步類
注意對(duì)HashTable的操作,作為Key的對(duì)象要覆寫(xiě)equals和hashCode方法
在各種Map中HashMap用于快速查找
最長(zhǎng)使用的是ArrayList、HashSet、HashMap、Array
下面是一個(gè)找出元素字符串?dāng)?shù)組中最長(zhǎng)字符串的例子
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靜態(tài)函數(shù)的使用
System.out.println("max: "+max);
}
}
class strSort implements Comparator<String>{
<span style="white-space:pre"> </span>// 一個(gè)比較器重新定義
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;
}
}
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- Java?HashTable與Collections.synchronizedMap源碼深入解析
- 淺談collection標(biāo)簽的oftype屬性能否為java.util.Map
- JAVA容器集合全面解析(Collection和Map)
- 如何解決Mybatis--java.lang.IllegalArgumentException: Result Maps collection already contains value for X
- 淺談Java中常用數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)類 Collection和Map
- java 集合----Map、Collection
- Java Map集合與Collection類的使用詳解
相關(guān)文章
java實(shí)現(xiàn)簡(jiǎn)單網(wǎng)絡(luò)象棋游戲
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單網(wǎng)絡(luò)象棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
SpringBoot集成PDFBox實(shí)現(xiàn)電子簽章的代碼詳解
Apache PDFBox 是一個(gè)開(kāi)源的 Java 庫(kù),用于處理 PDF 文檔,它提供了一系列強(qiáng)大的功能,包括創(chuàng)建、渲染、拆分、合并、加密、解密 PDF 文件,以及從 PDF 中提取文本和元數(shù)據(jù)等,本文給大家介紹了SpringBoot集成PDFBox實(shí)現(xiàn)電子簽章,需要的朋友可以參考下2024-09-09
如何實(shí)現(xiàn)nohup?java進(jìn)程號(hào)一直在變方法步驟詳解
這篇文章主要為大家介紹了如何實(shí)現(xiàn)nohup?java進(jìn)程號(hào)一直在變方法步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
hibernate測(cè)試時(shí)遇到的幾個(gè)異常及解決方法匯總
今天小編就為大家分享一篇關(guān)于hibernate測(cè)試時(shí)遇到的幾個(gè)異常及解決方法匯總,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
SpringBoot如何讀取配置文件中的數(shù)據(jù)到map和list
這篇文章主要介紹了SpringBoot如何讀取配置文件中的數(shù)據(jù)到map和list,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02

