再多学一点吧

导航

< 2025年3月 >
23 24 25 26 27 28 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 26 27 28 29
30 31 1 2 3 4 5

统计

Collections集合工具类和可变参数

Collections常用的API:

    public static <T> boolean addAll(Collection<? super T> c, T... elements)    给集合对象批量添加元素

    public static void shuffle(List<?> list)   打乱集合顺序(只能打乱List集合

    public static <T> void sort(List<T> list )    将集合中元素按照默认规则排序(给List集合升序排序)

    public static <T> void sort(List<T> list, Comparator<? super T> )  将集合中元素按照

复制代码
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class CollectionsDemo1 {
    public static void main(String[] args) {
        //给集合批量添加元素
        Collection<String> name=new ArrayList<>();
        Collections.addAll(name,"喜羊羊","懒洋洋","美羊羊");
        System.out.println(name);  //  [喜羊羊, 懒洋洋, 美羊羊]
        //打乱集合顺序(有序集合)
        List<String> name1=new ArrayList<>();
        Collections.addAll(name1,"灰太狼1","红太狼2","小灰灰3");
        Collections.shuffle(name1); //每次打乱都不一样
        System.out.println(name1);  //  [红太狼2, 灰太狼1, 小灰灰3]
        //升序排序(List),根据首字符ACAII码值
        List<String> name2=new ArrayList<>();
        Collections.addAll(name2,"apple","pear","orange","banana","78","A");
        Collections.sort(name2);
        System.out.println(name2);
        
    }
}
复制代码

------------------------------------------------------------------------------------------------------------------------------------------------

注意:如果类有比较规则,而这里有比较器,优先使用比较器

 

复制代码
package com.day04.practice2;

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

public class CollectionDemo2 {
    public static void main(String[] args) {
        List<Human> l=new ArrayList<>();
        Collections.addAll(l,new Human("张三",66),new Human("李四",28), new Human("毛六",27));
        Collections.sort(l);
        System.out.println(l);

        //第二种为集合设置比较器Compartor对象,重写比较方法
        List<Human> ll=new ArrayList<>();
        Collections.addAll(ll,new Human("张三",66),new Human("李四",28), new Human("毛六",27));
        Collections.sort(ll, new Comparator<Human>() {
            @Override
            public  int compare(Human h1,Human h2){
                return h2.getAge()-h1.getAge();
            }

        });
        System.out.println(ll);
    }
}




class Human implements Comparable<Human>{ //第一种为对象的类实现比较器接口Comparable,重写比较方法
    private String name;
    private int age;

    @Override
    public int compareTo(Human h){
        if(this.age>h.age)return 1;
        if(this.age<h.age)return -1;
        return 0;
    }

    Human(){

    }
    Human(String name,int age){
        this.name=name;
        this.age=age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Human{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

//输出结果
//[Human{name='毛六', age=27}, Human{name='李四', age=28}, Human{name='张三', age=66}]
//[Human{name='张三', age=66}, Human{name='李四', age=28}, Human{name='毛六', age=27}]
复制代码

 

可变参数在方法内部本质是就是一个数组

可变参数的格式:数据类型...参数名称

注意:1.一个 形参列表可变参数只能有一个!!

   2.可变参数必须放在形参列表的最后面!!

复制代码
public class KeBian {
    public static void main(String[] args) {
        sum(15);
        sum(125,78,45);
        sum(new int[]{78,45,12,78});
        System.out.println("-------------------");
        sum1("yyyy");
        sum1("hhhh",89,45);
        sum1("21564",new int[]{787,6,8,7});

    }

    public  static void sum(int...nums){
        System.out.println("长度:"+nums.length);
        System.out.println("内容:"+Arrays.toString(nums));
    }


    public static void sum1(String str,int...nums){
        System.out.println("长度:"+nums.length);
        System.out.println("内容:"+Arrays.toString(nums));
    }
}

输出结果:长度:1
内容:[15]
长度:3
内容:[125, 78, 45]
长度:4
内容:[78, 45, 12, 78]
-------------------
长度:0
内容:[]
长度:2
内容:[89, 45]
长度:4
内容:[787, 6, 8, 7]
复制代码

 

 

    

posted on   糟糟张  阅读(96)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示