久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

        手機站
        千鋒教育

        千鋒學習站 | 隨時隨地免費學

        千鋒教育

        掃一掃進入千鋒手機站

        領取全套視頻
        千鋒教育

        關注千鋒學習站小程序
        隨時隨地免費學習課程

        當前位置:首頁  >  技術干貨  > Collection與Collections有什么區(qū)別?

        Collection與Collections有什么區(qū)別?

        來源:千鋒教育
        發(fā)布人:zyh
        時間: 2023-06-12 15:51:00 1686556260

          全文大約【3300】字,不說廢話,只講可以讓你學到技術、明白原理的純干貨!本文帶有豐富的案例及配圖視頻,讓你更好地理解和運用文中的技術概念,并可以給你帶來具有足夠啟迪的思考......

        Collection與Collections有什么區(qū)別

          一. 知識回顧

          1.Java集合體系

          根據(jù)小編前面給大家講解的內容可知,Java的集合整體上可以分為 Collection 和 Map 兩大體系,而從這兩大體系中又可以延伸細分為 3個子類型:

          ● List-列表

          ● Set-集

          ● Map-映射

          從整體上來看,這幾種集合之間的關系如下圖所示:

        1685943035252.image

          2.集合的關系圖譜

          另外集合的各個接口和類之間除了有共同之處,它們也有一些各自的特點,我們可以看看下面這個集合的關系圖譜:

        1685943026309.image

          在上圖中,有3個核心API需要我們掌握:

          ● Iterator: 我們可以通過迭代器遍歷集合中的數(shù)據(jù);

          ● Collection: Collection是List、Set、Queue 這3種集合的父級接口;

          ● Map: Map是映射表的父級接口。

          為了讓大家加深印象,接下來我們再單獨復習一下Collection接口是怎么回事。

          二. Collection

          1.簡介

          Collection是Java集合框架中的一個接口,它定義了一組用于存儲、訪問和操作對象的方法。它是Java集合框架中的基礎接口之一,我們常用的很多集合類都實現(xiàn)了Collection接口或其子接口(如List、Set、Queue等)。

        1685943065766.image

          2.核心方法

          Collection接口中定義了一系列用于操作集合的通用核心方法,包括添加、刪除、遍歷、查找等,Collection的各個子類都需要實現(xiàn)這些方法。下面是一些常用的Collection接口方法:

          ● add(E e):將元素e添加到集合中;

          ● remove(Object o):從集合中刪除對象o;

          ● contains(Object o):判斷集合中是否包含對象o;

          ● size():返回集合中元素的個數(shù);

          ● iterator():返回集合中元素的迭代器。

          通過這些方法,我們可以輕松地操作集合中的元素,實現(xiàn)各種常用的功能。

          三. Collections

          1.簡介

          Collections是Java集合框架為了方便我們進行集合開發(fā),為我們提供的一個操作Set、List和Map等集合的工具類,位于java.util包中。該類提供了一系列的靜態(tài)方法,可以實現(xiàn)對集合進行排序、查找、替換、復制等操作。Collections類中的方法都是靜態(tài)方法,不需要創(chuàng)建其對象即可使用。

          利用Collections類,我們可以對集合進行一些高級的操作,比如對集合進行排序、查找最大值、查找最小值等??傊珻ollections類中提供的方法,可以幫助我們簡化代碼,提高開發(fā)效率。

          2.常用方法

          Collections類中為我們提供的方法其實有很多,大致可以分為以下幾類:

          ● 創(chuàng)建空白集合:emptyList()、emptyMap()、emptySet():返回對應的不可變的空集合,無法向其中添加或刪除元素;

          ● 創(chuàng)建單個元素的集合:singletonList(T o)、singletonMap(K key, V value)、singleton(T o):返回的是不可變的單元素集合,無法向其中添加或刪除元素;

          ● 排序方法:sort、reverse、shuffle、swap、rotate;

          ● 查找方法:binarySearch;

          ● 替換方法:replaceAll、fill;

          ● 復制方法:copy;

          ● 同步方法:synchronizedCollection、synchronizedList、synchronizedMap等;

          ● 不可修改方法:unmodifiableCollection、unmodifiableList、unmodifiableMap等;

          ● 其他方法:frequency、max、min、disjoint、frequency、indexOfSubList、lastIndexOfSubList等。

          接下來小編就通過幾個案例,來教大家學會這些方法該如何使用。

          3.基本使用

          3.1 排序方法

          Collections類給我們提供了好幾個排序方法,比如sort()、reverse()、shuffle()等,用于對集合進行排序。

          3.1.1 sort方法 

        import java.util.ArrayList;
        import java.util.Collections;
        import java.util.List;

        /**
        * @author 一一哥Sun
        */
        public class Demo19 {

        public static void main(String[] args) {
        //Collections的使用--排序方法
        List<Integer> list = new ArrayList<>();
        list.add(3);
        list.add(1);
        list.add(2);
        //調用Collections的sort()排序方法---升序
        Collections.sort(list);
        System.out.println(list); // [1, 2, 3]
        }
        }

          3.1.2 reverse方法

          reverse(List list)方法用于對List集合進行反轉排序,例如:  

        import java.util.ArrayList;
        import java.util.Collections;
        import java.util.List;

        /**
        * @author 一一哥Sun
        */
        public class Demo19 {

        public static void main(String[] args) {
        //Collections的使用--排序方法
        //調用Collections的reverse()排序方法--反轉排序
        List<Integer> list2 = new ArrayList<>();
        list2.add(1);
        list2.add(2);
        list2.add(3);
        Collections.reverse(list2);
        System.out.println(list2); // [3, 2, 1]
        }
        }

          3.1.3 shuffle方法

          shuffle(List list)方法用于對List集合進行隨機排序,例如: 

        import java.util.ArrayList;
        import java.util.Collections;
        import java.util.List;

        /**
        * @author 一一哥Sun
        */
        public class Demo19 {

        public static void main(String[] args) {
        //Collections的使用--排序方法
        //調用Collections的shuffle()排序方法--隨機
        List<Integer> list3 = new ArrayList<>();
        list3.add(1);
        list3.add(2);
        list3.add(3);
        Collections.shuffle(list3);
        System.out.println(list3); // [2, 1, 3]
        }
        }

          3.2 查找方法

          Collections類也給我們提供了用于對集合進行二分查找的binarySearch(List> list, T key)方法,該方法用于在有序集合中根據(jù)二分查找法,來查找到指定的元素,并返回元素在集合中的索引。如果指定元素不在集合中,則返回一個負數(shù),表示應該插入該元素的位置。binarySearch()方法案例如下: 

        import java.util.ArrayList;
        import java.util.Collections;
        import java.util.List;

        /**
        * @author 一一哥Sun
        */
        public class Demo20 {

        public static void main(String[] args) {
        //Collections的使用--查找方法
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        //二分查找
        int index = Collections.binarySearch(list, 2);
        System.out.println(index); // 1
        }
        }

          3.3 替換方法

          Collections類給我們提供了一些用于替換的方法,比如replaceAll()、fill(),用于對集合進行替換。

          3.3.1 replaceAll()方法

          replaceAll(List list, T oldVal, T newVal)方法用于將List集合中所有的舊元素替換為新元素,例如:  

        import java.util.ArrayList;
        import java.util.Collections;
        import java.util.List;

        /**
        * @author 一一哥Sun
        */
        public class Demo21 {

        public static void main(String[] args) {
        //Collections的使用--替換方法
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        //替換方法
        Collections.replaceAll(list, 2, 4);
        System.out.println(list); // [1, 4, 3]
        }
        }

          3.3.2 fill()方法

          fill(List list, T obj)方法用于用指定元素填充List集合,例如: 

        import java.util.ArrayList;
        import java.util.Collections;
        import java.util.List;

        /**
        * @author 一一哥Sun
        */
        public class Demo21 {

        public static void main(String[] args) {
        //Collections的使用--替換方法
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        //指定元素填充List集合
        Collections.fill(list, 0);
        System.out.println(list); // [0, 0, 0]
        }
        }

          3.4 同步方法

          Collections類提供了一些同步方法,如synchronizedCollection()、synchronizedList()、synchronizedMap()等,用于對集合進行同步處理,這可以保證多線程環(huán)境下的并發(fā)安全。

          3.4.1 synchronizedCollection方法

          synchronizedCollection(Collection c)方法用于將指定集合轉換為線程安全的集合,例如:  

        import java.util.ArrayList;
        import java.util.Collection;
        import java.util.Collections;
        import java.util.List;

        /**
        * @author 一一哥Sun
        */
        public class Demo22 {

        public static void main(String[] args) {
        //Collections的使用--同步方法
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        //將指定集合轉換為線程安全的集合
        Collection<Integer> synchronizedList = Collections.synchronizedCollection(list);
        System.out.println("list="+synchronizedList);
        }
        }

          3.4.2 synchronizedList方法

          synchronizedList(List list)方法用于將指定的List集合轉換為線程安全的List集合,例如:  

        import java.util.ArrayList;
        import java.util.Collection;
        import java.util.Collections;
        import java.util.List;

        /**
        * @author 一一哥Sun
        */
        public class Demo22 {
        public static void main(String[] args) {
        //Collections的使用--同步方法
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        //將指定的List集合轉換為線程安全的List集合
        List<Integer> synchronizedList = Collections.synchronizedList(list);
        System.out.println("list2="+synchronizedList);
        }
        }

          3.4.3 synchronizedSet方法

          synchronizedSet(Set s)方法用于將指定的Set集合轉換為線程安全的Set集合,例如: 

        import java.util.ArrayList;
        import java.util.Collection;
        import java.util.Collections;
        import java.util.List;

        /**
        * @author 一一哥Sun
        */
        public class Demo22 {
        public static void main(String[] args) {
        //Collections的使用--同步方法
        Set<Integer> set = new HashSet<>();
        set.add(1);
        set.add(2);
        set.add(3);
        //將指定的Set集合轉換為線程安全的Set集合
        Set<Integer> synchronizedSet = Collections.synchronizedSet(set);
        System.out.println("set="+synchronizedSet);
        }
        }

          3.4.4 synchronizedMap方法

          synchronizedMap(Map m)方法用于將指定的Map集合轉換為線程安全的Map集合,例如:  

        import java.util.ArrayList;
        import java.util.Collection;
        import java.util.Collections;
        import java.util.List;

        /**
        * @author 一一哥Sun
        */
        public class Demo22 {
        public static void main(String[] args) {
        //Collections的使用--同步方法
        Map<String, Integer> map = new HashMap<>();
        map.put("a", 1);
        map.put("b", 2);
        map.put("c", 3);
        //將指定的Map集合轉換為線程安全的Map集合
        Map<String, Integer> synchronizedMap = Collections.synchronizedMap(map);
        System.out.println("map="+synchronizedMap);
        }
        }

          3.5 其他方法

          我們可以使用max()和min()方法分別輸出集合中的最大和最小值,用frequency()方法統(tǒng)計某個數(shù)據(jù)在集合中出現(xiàn)的次數(shù)。 

        import java.util.ArrayList;
        import java.util.Collection;
        import java.util.Collections;
        import java.util.List;

        /**
        * @author 一一哥Sun
        */
        public class Demo23 {
        public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(100);
        list.add(-2);
        list.add(88);
        list.add(88);
        //查找集合中的最大值
        System.out.println("max="+Collections.max(list));
        //查找集合中的最小值
        System.out.println("min="+Collections.min(list));
        //判斷88在List集合中出現(xiàn)的次數(shù),返回2
        System.out.println(Collections.frequency(list, 88));
        }
        }

          我們也可以使用Collections的copy()靜態(tài)方法,將指定集合中的所有元素復制到另一個集合中。執(zhí)行copy()方法后,目標集合中每個已復制元素的索引,將等同于源集合中該元素的索引。 

        import java.util.ArrayList;
        import java.util.Collection;
        import java.util.Collections;
        import java.util.List;

        /**
        * @author 一一哥Sun
        */
        public class Demo23 {
        public static void main(String[] args) {
        List<Integer> srcList = new ArrayList<>();
        srcList.add(10);
        srcList.add(88);
        srcList.add(100);

        List<Integer> destList = new ArrayList<>();
        destList.add(-1);
        destList.add(0);
        destList.add(1);

        //調用copy()方法,將srcList集合中的元素復制到destList集合中
        // java.lang.IndexOutOfBoundsException: Source does not fit in dest
        //destList表示目標集合對象,srcList表示源集合對象。
        Collections.copy(destList, srcList);
        System.out.println(destList);
        }
        }

          我們要注意:目標集合的長度至少要和源集合的長度相同。如果目標集合的長度更長,則不影響目標集合中的其余元素。如果目標集合的長度不夠而無法包含整個源集合元素,程序會拋出 IndexOutOfBoundsException異常。

          除了以上這些方法,還有其他的一些方法,比如將一個集合變成不可變的集合,用于對集合進行保護等,小編就不再一一給大家展示其用法了。這些方法基本上就是見名知意,大家根據(jù)名稱調用就可以,非常的簡單。總之,小編希望大家可以熟練掌握Collections類的使用方法,這對于Java開發(fā)人員來說是非常重要的。

          三. Collection與Collections的區(qū)別

          綜上所述,小編就可以把Collection與Collections的區(qū)別給大家總結出來了。Collection和Collections雖然名字很相似,但它們的作用和用法完全不同,其核心區(qū)別如下:

          ● Collection是Java集合框架中的一個接口,定義了一組用于存儲、訪問和操作對象的方法,它是所有集合類的基礎接口之一;

          ● Collections是Java集合框架中的一個工具類,提供了一系列的靜態(tài)方法,方便我摸對集合進行排序、查找、替換等操作,它是一個類,而不是一個接口。

          簡單來說,Collection是一個接口,是Java集合框架中的基礎接口之一;而Collections是一個工具類,提供了一系列靜態(tài)方法,用于對集合進行高級操作。

          四. 結語

          至此,小編就把今天的內容講解完畢了,我相信大家也已經(jīng)明白了Collection與Collections的區(qū)別了。那么今天的核心內容,就是下面這些了:

          ● Collection是Java集合的基礎接口,List、Set等都繼承自該接口;

          ● Collections是操作集合的工具類,里面有若干個操作集合的方法;

          ● 你要熟練使用Collections里的幾個常用方法哦。

        tags: Collection
        聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
        10年以上業(yè)內強師集結,手把手帶你蛻變精英
        請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
        免費領取
        今日已有369人領取成功
        劉同學 138****2860 剛剛成功領取
        王同學 131****2015 剛剛成功領取
        張同學 133****4652 剛剛成功領取
        李同學 135****8607 剛剛成功領取
        楊同學 132****5667 剛剛成功領取
        岳同學 134****6652 剛剛成功領取
        梁同學 157****2950 剛剛成功領取
        劉同學 189****1015 剛剛成功領取
        張同學 155****4678 剛剛成功領取
        鄒同學 139****2907 剛剛成功領取
        董同學 138****2867 剛剛成功領取
        周同學 136****3602 剛剛成功領取
        相關推薦HOT
        新余市| 祁阳县| 景东| 南城县| 辉南县| 兴业县| 刚察县| 吉木乃县| 莒南县| 渝中区| 广宗县| 仁布县| 名山县| 青浦区| 五华县| 海城市| 商城县| 盐边县| 平顺县| 平遥县| 建德市| 霍州市| 东乡| 虹口区| 武定县| 岑巩县| 琼海市| 德州市| 长子县| 中牟县| 马关县| 清远市| 衡阳县| 安泽县| 沂南县| 乌兰县| 迁安市| 荔波县| 谢通门县| 舒城县| 寿阳县|