最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java的可變參數(shù)與Collections類(lèi)的功能示例解析

 更新時(shí)間:2023年05月31日 14:30:22   作者:瑪拉_以琳  
這篇文章主要為大家介紹了Java的可變參數(shù)與Collections類(lèi)的功能示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1. 可變參數(shù)

JDK1.5之后,如果我們定義一個(gè)方法需要接受多個(gè)參數(shù),并且多個(gè)參數(shù)類(lèi)型一致,我們可以對(duì)其簡(jiǎn)化.

格式:

修飾符 返回值類(lèi)型 方法名(參數(shù)類(lèi)型... 形參名){  }

底層:

? 其實(shí)就是一個(gè)數(shù)組

好處:

? 在傳遞數(shù)據(jù)的時(shí)候,省的我們自己創(chuàng)建數(shù)組并添加元素了,JDK底層幫我們自動(dòng)創(chuàng)建數(shù)組并添加元素了

代碼演示:

public class ChangeArgs {
    public static void main(String[] args) {
        int sum = getSum(6, 7, 2, 12, 2121);
        System.out.println(sum);
    }
    public static int getSum(int... arr) {
           int sum = 0;
            for (int a : arr) {
         sum += a;
        }
            return sum;
    }
}

注意:

? 1.一個(gè)方法只能有一個(gè)可變參數(shù)

? 2.如果方法中有多個(gè)參數(shù),可變參數(shù)要放到最后。

應(yīng)用場(chǎng)景: Collections

? 在Collections中也提供了添加一些元素方法:

public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素。

代碼演示:

public class CollectionsDemo {
    public static void main(String[] args) {
      ArrayList<Integer> list = new ArrayList<Integer>();
      //原來(lái)寫(xiě)法
      //list.add(12);
      //list.add(14);
      //list.add(15);
      //list.add(1000);
      //采用工具類(lèi) 完成 往集合中添加元素  
      Collections.addAll(list, 5, 222, 1,2);
      System.out.println(list);
}

2. Collections類(lèi)

2.1 Collections常用功能

  • java.utils.Collections是集合工具類(lèi),用來(lái)對(duì)集合進(jìn)行操作。

    常用方法如下:

  • public static void shuffle(List<?> list) :打亂集合順序。
  • public static <T> void sort(List<T> list):將集合中元素按照默認(rèn)規(guī)則排序。
  • public static <T> void sort(List<T> list,Comparator<? super T> ):將集合中元素按照指定規(guī)則排序。

代碼演示:

public class CollectionsDemo {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(100);
        list.add(300);
        list.add(200);
        list.add(50);
        //排序方法 
        Collections.sort(list);
        System.out.println(list);
    }
}
結(jié)果:
[50,100, 200, 300]

我們的集合按照默認(rèn)的自然順序進(jìn)行了排列,如果想要指定順序那該怎么辦呢?

2.2 Comparator比較器

創(chuàng)建一個(gè)學(xué)生類(lèi),存儲(chǔ)到ArrayList集合中完成指定排序操作。

Student 類(lèi)

public class Student{
    private String name;
    private int age;
    //構(gòu)造方法
    //get/set
     //toString
}

測(cè)試類(lèi):

public class Demo {
    public static void main(String[] args) {
        // 創(chuàng)建四個(gè)學(xué)生對(duì)象 存儲(chǔ)到集合中
        ArrayList<Student> list = new ArrayList<Student>();
        list.add(new Student("rose",18));
        list.add(new Student("jack",16));
        list.add(new Student("abc",20));
        Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
            return o1.getAge()-o2.getAge();//以學(xué)生的年齡升序
            }
        });
        for (Student student : list) {
            System.out.println(student);
        }
    }
}
Student{name='jack', age=16}
Student{name='rose', age=18}
Student{name='abc', age=20}

3. 綜合練習(xí)

練習(xí)1:隨機(jī)點(diǎn)名器

需求:班級(jí)里有N個(gè)學(xué)生,實(shí)現(xiàn)隨機(jī)點(diǎn)名器

代碼實(shí)現(xiàn):

public class Test1 {
    public static void main(String[] args) {
        /* 班級(jí)里有N個(gè)學(xué)生,學(xué)生屬性:姓名,年齡,性別。
        實(shí)現(xiàn)隨機(jī)點(diǎn)名器。*/
        //1.定義集合
        ArrayList<String> list = new ArrayList<>();
        //2.添加數(shù)據(jù)
        Collections.addAll(list,"范閑","范建","范統(tǒng)","杜子騰","杜琦燕","宋合泛","侯籠藤","朱益群","朱穆朗瑪峰","袁明媛");
        //3.隨機(jī)點(diǎn)名
        /* Random r = new Random();
        int index = r.nextInt(list.size());
        String name = list.get(index);
        System.out.println(name);*/
        //打亂
        Collections.shuffle(list);
        String name = list.get(0);
        System.out.println(name);
    }
}

練習(xí)2:帶概率的隨機(jī)

需求:

? 班級(jí)里有N個(gè)學(xué)生

? 要求在隨機(jī)的時(shí)候,70%的概率隨機(jī)到男生,30%的概率隨機(jī)到女生

代碼實(shí)現(xiàn):

public class Test2 {
    public static void main(String[] args) {
        /* 班級(jí)里有N個(gè)學(xué)生
        要求:
        70%的概率隨機(jī)到男生
        30%的概率隨機(jī)到女生
        "范閑","范建","范統(tǒng)","杜子騰","宋合泛","侯籠藤","朱益群","朱穆朗瑪峰",
        "杜琦燕","袁明媛","李猜","田蜜蜜",
        */
        //1.創(chuàng)建集合
        ArrayList<Integer> list = new ArrayList<>();
        //2.添加數(shù)據(jù)
        Collections.addAll(list,1,1,1,1,1,1,1);
        Collections.addAll(list,0,0,0);
        //3.打亂集合中的數(shù)據(jù)
        Collections.shuffle(list);
        //4.從list集合中隨機(jī)抽取0或者1
        Random r = new Random();
        int index = r.nextInt(list.size());
        int number = list.get(index);
        System.out.println(number);
        //5.創(chuàng)建兩個(gè)集合分別存儲(chǔ)男生和女生的名字
        ArrayList<String> boyList = new ArrayList<>();
        ArrayList<String> girlList = new ArrayList<>();
        Collections.addAll(boyList,"范閑","范建","范統(tǒng)","杜子騰","宋合泛","侯籠藤","朱益群","朱穆朗瑪峰");
        Collections.addAll(girlList,"杜琦燕","袁明媛","李猜","田蜜蜜");
        //6.判斷此時(shí)是從boyList里面抽取還是從girlList里面抽取
        if(number == 1){
            //boyList
            int boyIndex = r.nextInt(boyList.size());
            String name = boyList.get(boyIndex);
            System.out.println(name);
        }else{
            //girlList
            int girlIndex = r.nextInt(girlList.size());
            String name = girlList.get(girlIndex);
            System.out.println(name);
        }
    }
}

練習(xí)3:隨機(jī)不重復(fù)

需求:

? 班級(jí)里有N個(gè)學(xué)生,被點(diǎn)到的學(xué)生不會(huì)再被點(diǎn)到。但是如果班級(jí)中所有的學(xué)生都點(diǎn)完了, 需要重新開(kāi)啟第二輪點(diǎn)名。

代碼實(shí)現(xiàn):

public class Test3 {
    public static void main(String[] args) {
       /* 班級(jí)里有5個(gè)學(xué)生
        要求:
        被點(diǎn)到的學(xué)生不會(huì)再被點(diǎn)到。
        但是如果班級(jí)中所有的學(xué)生都點(diǎn)完了,需要重新開(kāi)啟第二輪點(diǎn)名。*/
        //1.定義集合
        ArrayList<String> list1 = new ArrayList<>();
        //2.添加數(shù)據(jù)
        Collections.addAll(list1, "范閑", "范建", "范統(tǒng)", "杜子騰", "杜琦燕", "宋合泛", "侯籠藤", "朱益群", "朱穆朗瑪峰", "袁明媛");
        //創(chuàng)建一個(gè)臨時(shí)的集合,用來(lái)存已經(jīng)被點(diǎn)到學(xué)生的名字
        ArrayList<String> list2 = new ArrayList<>();
        //外循環(huán):表示輪數(shù)
        for (int i = 1; i <= 10; i++) {
            System.out.println("=========第" + i + "輪點(diǎn)名開(kāi)始了======================");
            //3.獲取集合的長(zhǎng)度
            int count = list1.size();
            //4.隨機(jī)點(diǎn)名
            Random r = new Random();
            //內(nèi)循環(huán):每一輪中隨機(jī)循環(huán)抽取的過(guò)程
            for (int j = 0; j < count; j++) {
                int index = r.nextInt(list1.size());
                String name = list1.remove(index);
                list2.add(name);
                System.out.println(name);
            }
            //此時(shí)表示一輪點(diǎn)名結(jié)束
            //list1 空了 list2 10個(gè)學(xué)生的名字
            list1.addAll(list2);
            list2.clear();
        }
    }
}

練習(xí)4:集合的嵌套

需求:

? 定義一個(gè)Map集合,鍵用表示省份名稱(chēng)province,值表示市city,但是市會(huì)有多個(gè)。

添加完畢后,遍歷結(jié)果格式如下:

? 江蘇省 = 南京市,揚(yáng)州市,蘇州市,無(wú)錫市,常州市

湖北省 = 武漢市,孝感市,十堰市,宜昌市,鄂州市  

河北省 = 石家莊市,唐山市,邢臺(tái)市,保定市,張家口市

代碼實(shí)現(xiàn):

public class Test4 {
    public static void main(String[] args) {
        /* 需求
        定義一個(gè)Map集合,鍵用表示省份名稱(chēng)province,值表示市city,但是市會(huì)有多個(gè)。
        添加完畢后,遍歷結(jié)果格式如下:
                江蘇省 = 南京市,揚(yáng)州市,蘇州市,無(wú)錫市,常州市
                湖北省 = 武漢市,孝感市,十堰市,宜昌市,鄂州市
                河北省 = 石家莊市,唐山市,邢臺(tái)市,保定市,張家口市*/
        //1.創(chuàng)建Map集合
        HashMap<String, ArrayList<String>> hm = new HashMap<>();
        //2.創(chuàng)建單列集合存儲(chǔ)市
        ArrayList<String> city1 = new ArrayList<>();
        city1.add("南京市");
        city1.add("揚(yáng)州市");
        city1.add("蘇州市");
        city1.add("無(wú)錫市");
        city1.add("常州市");
        ArrayList<String> city2 = new ArrayList<>();
        city2.add("武漢市");
        city2.add("孝感市");
        city2.add("十堰市");
        city2.add("宜昌市");

以上就是Java的可變參數(shù)與Collections類(lèi)的功能示例解析的詳細(xì)內(nèi)容,更多關(guān)于Java可變參數(shù)Collections類(lèi)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java?SpringAOP技術(shù)之注解方式詳解

    Java?SpringAOP技術(shù)之注解方式詳解

    這篇文章主要為大家詳細(xì)介紹了Java?SpringAOP技術(shù)之注解方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 通過(guò)prometheus監(jiān)控springboot程序運(yùn)行狀態(tài)的操作流程

    通過(guò)prometheus監(jiān)控springboot程序運(yùn)行狀態(tài)的操作流程

    jmx_exporter用于從Java應(yīng)用程序中提取JMX指標(biāo),適用于SpringBoot應(yīng)用,通過(guò)下載jar包和配置文件,可以抓取JVM基礎(chǔ)指標(biāo),要獲取應(yīng)用級(jí)別指標(biāo),需要集成Prometheus客戶端庫(kù)并自定義指標(biāo),本文給大家介紹了如何通過(guò)prometheus監(jiān)控springboot程序運(yùn)行狀態(tài)
    2025-02-02
  • Java處理XSS漏洞的四種方法小結(jié)

    Java處理XSS漏洞的四種方法小結(jié)

    本文主要介紹了Java處理XSS漏洞的四種方法小結(jié),包含使用HTML實(shí)體編碼、使用內(nèi)容安全策略(CSP)、使用框架內(nèi)置的XSS防護(hù)和自定義過(guò)濾器等方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • spring用戶通過(guò)交互界面登錄成功的實(shí)現(xiàn)

    spring用戶通過(guò)交互界面登錄成功的實(shí)現(xiàn)

    本文主要介紹了spring用戶通過(guò)交互界面登錄成功的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Java過(guò)濾XSS腳本攻擊詳細(xì)代碼示例

    Java過(guò)濾XSS腳本攻擊詳細(xì)代碼示例

    這篇文章主要介紹了Java過(guò)濾XSS腳本攻擊的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 一文帶你輕松掌握EasyExcel的使用技巧

    一文帶你輕松掌握EasyExcel的使用技巧

    EasyExcel是一個(gè)基于Java的、快速、簡(jiǎn)潔、解決大文件內(nèi)存溢出的Excel處理工具,這篇文章就來(lái)帶大家深入了解EasyExcel的使用技巧,需要的可以參考一下
    2023-06-06
  • springboot中如何通過(guò)main方法調(diào)用service或dao

    springboot中如何通過(guò)main方法調(diào)用service或dao

    這篇文章主要介紹了springboot中如何通過(guò)main方法調(diào)用service或dao,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java實(shí)現(xiàn)解析json復(fù)雜數(shù)據(jù)的第三種思路詳解

    java實(shí)現(xiàn)解析json復(fù)雜數(shù)據(jù)的第三種思路詳解

    這篇文章主要為大家信息介紹了java實(shí)現(xiàn)解析json復(fù)雜數(shù)據(jù)的第三種思路,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • SpringBoot Caffeine+Redisson配置二級(jí)緩存實(shí)踐

    SpringBoot Caffeine+Redisson配置二級(jí)緩存實(shí)踐

    文章介紹了兩級(jí)緩存架構(gòu)的必要性,詳細(xì)描述了使用Redission進(jìn)行SpringBoot緩存整合的方法,包括配置本地緩存、設(shè)置過(guò)期時(shí)間、開(kāi)啟緩存功能、解決key相同cacheNames不同的問(wèn)題以及修改自定義緩存管理器等內(nèi)容
    2026-05-05
  • java 學(xué)習(xí)筆記(入門(mén)篇)_java程序helloWorld

    java 學(xué)習(xí)筆記(入門(mén)篇)_java程序helloWorld

    安裝配置完Java的jdk,下面就開(kāi)始寫(xiě)第一個(gè)java程序--hello World.用來(lái)在控制臺(tái)輸出“Hello World”,接下來(lái)詳細(xì)介紹,感興趣的朋友可以參考下
    2013-01-01

最新評(píng)論

高清| 大理市| 青龙| 淅川县| 资中县| 郎溪县| 通榆县| 康马县| 蓬莱市| 浑源县| 麻江县| 泰宁县| 高陵县| 宜兴市| 平昌县| 宁河县| 璧山县| 南涧| 赤壁市| 平安县| 崇义县| 榕江县| 长白| 晋城| 兴山县| 毕节市| 策勒县| 会宁县| 大安市| 福州市| 连云港市| 德阳市| 新疆| 宽甸| 社会| 怀仁县| 金平| 清水县| 县级市| 南江县| 绥德县|