[进阶]Java:可变参数、集合操作的工具类Collections

本文介绍了Java中的可变参数,它允许在方法调用时传递任意数量的参数,可以在方法内部作为数组处理。同时讲解了Collections工具类,用于操作集合,如对List进行排序和打乱顺序。示例代码展示了如何使用Collections.sort()进行自定义排序,根据价格比较Apple对象。
摘要由CSDN通过智能技术生成

可变参数:

  • 可变参数用在形参中可以接收多个数据。
  • 可变参数的格式:数据类型…参数名称

可变参数的作用

  • 传输参数非常灵活,方便。可以不传输参数,可以传输1个或者多个,也可以传输一个数组
  • 可变参数在方法内部本质上就是一个数组。

可变参数的注意事项:

  • 一个形参列表中可变参数只能有一个
  • 可变参数必须放在形参列表的最后面

代码演示如下:

public class MethodDemo {
    public static void main(String[] args) {
        sum();//1.不传参数
        sum(10);//2.可以传输一个参数
        sum(10,20,30);//3.可以传输多个参数
        sum(new int[]{10,20,30,40,50});//3.可以传输一个数组
    }
    public static void sum(int...nums){
        //注意:可变参数在方法内部其实就是一个数组。nums
        System.out.println("元素个数" + nums.length);
        System.out.println("元素内容" + Arrays.toString(nums));
    }
}

Collections集合工具类

  • java.utils.Collections:是集合工具类
  • 作用:Collections并不属于集合,是用来操作集合的工具类。

Collections常用API

  • 使用范围:只能对于List集合的排序。

 代码演示如下:

public class CollectionsDemo01 {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        Collections.addAll(names, "楚留香", "胡铁花","张无忌","陆小凤");
        System.out.println(names); // [楚留香, 胡铁花, 张无忌, 陆小凤]

        //2.public static void shuffle(List<?> list):打乱集合顺序
        Collections.shuffle(names);
        System.out.println(names); // 随机打乱顺序

        //3.public static <T> void sort(List<T> list):将集合中元素按照默认规则排序(排值特性的元素)
        List<Integer> list = new ArrayList<>();
        Collections.addAll(list,12,22,21,4,6,7);
        System.out.println(list); // [12, 22, 21, 4, 6, 7]
        Collections.sort(list);
        System.out.println(list); // 随机打乱顺序
    }
}

使用自带比较器对象,按照指定规则进行排序

代码如下:

public class CollectionsDemo02 {
    public static void main(String[] args) {
        List<Apple> apples = new ArrayList<>();//可以重复
        apples.add(new Apple("红富士","红色",9.9,500));
        apples.add(new Apple("青苹果","绿色",15.9,300));
        apples.add(new Apple("花牛","深红色",29.9,400));
        apples.add(new Apple("黄苹果","黄色",9.8,500));

        //sort方法自带比较器对象
        Collections.sort(apples, new Comparator<Apple>() {
            @Override
            public int compare(Apple o1, Apple o2) {
                return Double.compare(o1.getPrice(), o2.getPrice()); // 按照价格比较
            }
        });
        System.out.println(apples);
    }
}

这里Apple类代码就不重复了,在上一篇文章有。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值