溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java集合方法怎么用

發(fā)布時(shí)間:2022-01-06 16:21:08 來(lái)源:億速云 閱讀:161 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要講解了“Java集合方法怎么用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Java集合方法怎么用”吧!

概述:

  • 面向?qū)ο笳Z(yǔ)言對(duì)事物的體現(xiàn)都是以對(duì)象的形式,為了方便多個(gè)對(duì)象的操作,就要對(duì)對(duì)象進(jìn)行存儲(chǔ)。另一方面,使用Array存儲(chǔ)對(duì)象方面具有一些弊端,而Java集合就像一種容器,可以動(dòng)態(tài)地多個(gè)對(duì)象的引用放入容器中。

  • Java集合類可以用于存儲(chǔ)數(shù)量不等的對(duì)個(gè)對(duì)象,還可用于保存具有映射關(guān)系的關(guān)聯(lián)數(shù)組。

使用:

  • 存儲(chǔ)對(duì)象可以考慮:①數(shù)組    ②集合

  • 數(shù)組存儲(chǔ)對(duì)象的特點(diǎn):Student[]    stu=new    Student[20];    stu[0]=new Student(); ...

    • 使用數(shù)組的弊端:一旦創(chuàng)建,其長(zhǎng)度不可變。

    • 真實(shí)的數(shù)組存放的對(duì)象的個(gè)數(shù)是不可知的。

集合:    

  • Collection接口:

    • List:元素有序、可以重復(fù)的集合    - - - - "  動(dòng)態(tài)“ 數(shù)組

      • ①ArrayList(主要的實(shí)現(xiàn)類)(底層是用數(shù)組實(shí)現(xiàn)的)   

      • ②LinkedList(對(duì)于頻繁的插入、刪除操作建議使用這個(gè))(底層用鏈表實(shí)現(xiàn)的)   

      • ③Vector(古老的實(shí)現(xiàn)類、線程安全的)

    • Set:元素?zé)o序、不可重復(fù)的集合 (Set中常用的方法都是 Collection 下定義的    - - - - 類似高中的 " 集合 "
          • Set:存儲(chǔ)的元素是無(wú)序的,不可重復(fù)的!

            • 無(wú)序性:無(wú)序性!=隨機(jī)性。真正的無(wú)序性,指的是元素在底層存儲(chǔ)的位置是無(wú)序的。

            • 不可重復(fù)性:當(dāng)向Set中添加進(jìn)相同的元素的時(shí)候,后面的這個(gè)不能添加進(jìn)去。

            • 說(shuō)明:要求添加進(jìn)Set中的元素所在的類,一定要重寫equals()和hashCode()方法。進(jìn)而保證Set中元素的不可重復(fù)性!

            • Set中的元素是如何存儲(chǔ)的呢?使用了哈希算法。

              • 當(dāng)向Set中添加對(duì)象時(shí),首先調(diào)用此對(duì)象所在類的hashCode()方法,計(jì)算此對(duì)象的哈希值,此哈希值決定了此對(duì)象在Set中的存儲(chǔ)位置。若此位置之前沒(méi)有對(duì)象存儲(chǔ),則這個(gè)對(duì)象直接存儲(chǔ)到此位置。若此位置已有對(duì)象存儲(chǔ),再通過(guò)equals()方法比較這兩個(gè)對(duì)象是否相同,如果相同,后一個(gè)對(duì)象就不能再添加進(jìn)來(lái)。

              • 萬(wàn)一返回false呢?都存儲(chǔ)(不建議如此)

              • >要求hashCode()方法要與equals()方法一致。


      • ①HashSet(主要實(shí)現(xiàn)類)

      • ②LinkedHashSet   

        • 使用鏈表維護(hù)了一個(gè)添加集合中的順序。導(dǎo)致當(dāng)我們遍歷LinkedHashSet集合元素時(shí),是按照添加進(jìn)去的順序遍歷的。


          • LinkedHashSet插入性能略低于 HashSet,但在迭代訪問(wèn) Set 里的全部元素時(shí)有很好的性能。


        • LinkedHashSet 不允許集合元素重復(fù)。

      • ③TreeSet

        • 向TreeSet中添加的元素,必須是同一個(gè)類的

        • TreeSet 不允許集合元素重復(fù)。

        • 可以按照添加進(jìn)集合中的元素的指定的順序遍歷。像String,包裝類等默認(rèn)按照從小到大的順序遍歷。

        • 當(dāng)Person類沒(méi)有實(shí)現(xiàn)Comparable接口時(shí),當(dāng)向TreeSet中添加Person對(duì)象時(shí),報(bào)ClassCaseException。

        • 當(dāng)向TrreSet中添加自定義類的對(duì)象時(shí),有兩種排序方法:

          • ①自然排序:要求自定義類實(shí)現(xiàn)java.lang.Comparable接口并重寫其compareTo(Object obj)的抽象方法,在此方法中,指明安裝自定義類的哪個(gè)屬性進(jìn)行排序。

          • ②定制排序:    comparetTo()與hashCode()以及equal s()三者保持一致! 排序方式 見以下步驟

            • ①創(chuàng)建一個(gè)實(shí)現(xiàn)了Comparator接口的類對(duì)象   

              • >①向TrreSet中添加Customer類的對(duì)象,在此compare()方法中,指明是按照Customer的那個(gè)屬性排序。

              • >②將此對(duì)象作為形參傳遞給TreeSet的構(gòu)造器中。

              • >③向TrreSet中添加Comparator接口中的compare方法中涉及的類的對(duì)象。

        • 向TreeSet中添加元素時(shí),首先要按照compareTo()方法進(jìn)行比較,一旦返回0,雖然僅是2個(gè)對(duì)象的此屬性值相同,但是程序會(huì)認(rèn)為這兩個(gè)對(duì)象是相同的,進(jìn)而后一個(gè)對(duì)象就不能添加進(jìn)來(lái)

          • >comparetTo()與hashCode()以及equal s()三者保持一致!

  • Map接口:具有映射關(guān)系 " key-value對(duì) " 的集合  - - - - 類似于高中的“ 函數(shù) ”y=f(x)        (x1,y1)(x2,y2);

      • ①HashMap    ②LinkedHashMap    ③TreeMap    ④Hashtable(子類:Properties)

Java集合方法怎么用

  • Collection:
    • size():返回集合中的元素(對(duì)象)的個(gè)數(shù);

    • add(Object  obj):向集合中添加一個(gè)元素(對(duì)象),任何類型都可以。

    • addAll(Collection  coll):將形參coll中包含的所有元素添加到當(dāng)前集合中。

    • isEmpty():判斷一下這個(gè)集合是否為空

    • clear():清空集合元素

    • contains(Objetc obj):判斷集合是否包含指定的obj元素。如果包含,返回true.反之返回false; 

      • 判斷的根據(jù):根據(jù)元素所在的類的equals() 方法進(jìn)行判斷

      • 明確:如果存入集合中的元素是自定義類的對(duì)象。要求:自定義類要重寫 equals() 方法。

    • System.out.println(對(duì)象);可以查看集合的元素

    • containsAll(Collection coll):判斷當(dāng)前集合中是否包含coll中所有的元素。

    • retainAll(Collction coll):求當(dāng)前集合與coll的共有的元素,返回給當(dāng)前集合

    • remove(Object obj):刪除集合中的obj元素。若刪除成功,返回true.反之返回false.

    • removeAll(Collection coll):從當(dāng)前集合中刪除包含在coll中的元素。

    • equals(Object obj):判斷兩個(gè)集合中的所有元素是否完全相同

    • hashCode():hash值(暫不明白);

    • roArray():將集合轉(zhuǎn)化成數(shù)組。(用Object來(lái)進(jìn)行接收)。

    • Collection coll=Arrays . asList(1,2,3):數(shù)組轉(zhuǎn)化成集合。

    • iterator():返回一個(gè)Iterator接口實(shí)現(xiàn)類的對(duì)象,進(jìn)而實(shí)現(xiàn)集合的遍歷。

      • //方式一:不用
        Iterator iterator=new Iterator();
        System.out.println(iterator.next());//輸出一個(gè),有幾個(gè)打印幾次。。
        //方式二:不用
        for(int i=0;i<coll.size();i++){
            System.out.println(iterator.next());
        }
        //方式三:使用Iterator實(shí)現(xiàn)集合的遍歷。
        Iterator iterator=new Iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
      • //使用增強(qiáng)for循環(huán)實(shí)現(xiàn)集合的遍歷
         Collection coll=new ArrayList();
         coll.add(123);
         coll.add("ASDF123");
         coll.add("BB");
         coll.add("AA");
         coll.add(456);
         for(Object i:coll){//將coll賦值給i,然后打印i.
             System.out.println(i);
         }
ArrayList:List的主要實(shí)現(xiàn)類
    • List中相對(duì)于Collection,新增加的方法

      • >     void add (int index, Object ele):在指定的索引位置添加元素
                boolean addAll (int index, Collection eles):在指定索引位置添加一個(gè)元素集合
                Object get (int index):獲取指定索引位置的元素
                Object remove (int index):刪除指定索引位置的元素
                Object set (int index, Object ele):設(shè)置指定索引位置的元素值

      • >     int indexOf (Object obj) :返回obj在集合中首次出現(xiàn)的位置。沒(méi)有的話。返回 -1
                int lastIndexOf (Object obj):返回obj在集合中最后一次出現(xiàn)的位置。沒(méi)有的話。返回 -1
                List subList (int fromIndex, int toIndex):返回從fromeIndex到toIndex結(jié)束的左閉右開的一個(gè)子list

      • List常用方法:①增(add(Object ele))    ③改(set(int index, Object ele))      ⑤長(zhǎng)度(sizi())

                              ②刪(remove)                   ④查(get(int index))                        ⑥插(addAll(int index, Collection eles))

Conllection接口
Map接口
  • HashMap:Map的主要實(shí)現(xiàn)類,key是用Set來(lái)存放的,不可重復(fù)。

    • value是用Collection來(lái)存放的,可重復(fù)一個(gè)Key - value對(duì)。是一個(gè)Entry。所有的Entry是用Set來(lái)存放的,也是不可重復(fù)的。

    • 向HashMap中添加元素時(shí),會(huì)調(diào)用key所在類的equals()方法,判斷兩個(gè)key是否相同。若相同則只能添加進(jìn)后添加的那個(gè)元素。

  • LinkedHashMap:使用鏈表維護(hù)添加進(jìn)Map中的順序,故遍歷Map時(shí),是按添加的順序遍歷的。

  • TreeMap:按照添加進(jìn)Map中元素的Key的指定屬性進(jìn)行排序。要求:key必須是同一個(gè)類的對(duì)象!

    • 針對(duì)key:①自然排序 vs ②定制排序

  • Hashtable:古老的實(shí)現(xiàn)類,線程安全,不建議使用

    • properties:常用來(lái)處理屬性文件。鍵和值都為String類型的

  • Map與Collection并列存在。用于保存具有映射關(guān)系的數(shù)據(jù):Key-Value

  • Map 中的 key 和  value 都可以是任何引用類型的數(shù)據(jù)

  • Map 中的 key 用Set來(lái)存放,不允許重復(fù),即同一個(gè) Map 對(duì)象所對(duì)應(yīng)的類,須重寫hashCode()和equals()方法。

  • 常用String類作為Map的“鍵”。

  • key 和 value 之間存在單向一對(duì)一關(guān)系,即通過(guò)指定的 key 總能找到唯一的、確定的 value。

  • 添加、刪除
            Object put(Object key,Object value):向Map中添加一個(gè)元素
            Object remove(Object key):按照指定的Key刪除此key - value
            void putAll(Map t):將一個(gè)新的對(duì)象中的所有元素添加進(jìn)來(lái)
            void clear():清空

  • 元素查詢
            Object get(Object key):獲取指定key的value值。若無(wú)此Key,則返回null.
            boolean containsKey(Object key):判斷這個(gè)map當(dāng)中是否包含指定的key的對(duì)。
            boolean containsValue(Object value): 判斷是否包含value的那個(gè)對(duì)。
            int size():返回集合的長(zhǎng)度
            boolean isEmpty(): 判斷元素是否為空
            boolean equals(Object obj):是否equals另一個(gè)

  • 元視圖操作:遍歷Map
            Set keySet()
            Collection values()
            Set entrySet()

①遍歷key集

Set set=new map.keySet();
for(Object obj:set){
   System.out.println(obj);
}

②遍歷value集

        Collection values=map.value();
        Iterator i=values.iterator();
        while(i.hasNext()){
            System.out.println(i.next());
        }

③遍歷 key - value 對(duì)。

Set set=new map.keySet();
for(Object obj:set){
   System.out.println(obj+"- - ->"+map.get(obj));
}

或者    :

Set set=map.entruySet();
for(Object obj:set){
Map.Entry entry =(Map.Entry)obj;
    System.out.println(entry.getKey()+"- - ->"+entry.getValue());
}
Collections:

       操作Collection以及Map的工具類:Collections

面試題:區(qū)分Collection和Collections

排序操作:

    ①reverse(List):反轉(zhuǎn) List 中元素的順序
    ②shuffle(List):對(duì) List 集合元素進(jìn)行隨機(jī)排序
    ③sort(List):根據(jù)元素的自然順序?qū)χ付?List 集合元素按升序排序
    ④sort(List,Comparator):根據(jù)指定的 Comparator 產(chǎn)生的順序?qū)?List 集合元素進(jìn)行排序
    ⑤swap(List,int, int):將指定 list 集合中的 i 處元素和 j 處元素進(jìn)行交換

查找、替換:

    ①Object max(Collection):根據(jù)元素的自然順序,返回給定集合中的最大元素
    ②Object max(Collection,Comparator):根據(jù) Comparator 指定的順序,返回給定集合中的最大元素
    ③Object min(Collection)
    ④Object min(Collection,Comparator)
    ⑤int frequency(Collection,Object):返回指定集合中指定元素的出現(xiàn)次數(shù)
    ⑥void copy(List dest,List src):將src中的內(nèi)容復(fù)制到dest中
    ⑦boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替換 List 對(duì)象的所有舊值

感謝各位的閱讀,以上就是“Java集合方法怎么用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Java集合方法怎么用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI