当前位置: 首页 > article >正文

Java基础——可变参数,集合操作工具类Collections

(1)可变参数:

1.特点:

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

2.作用:

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

 3.注意事项:

  • 一个形参列表中可变参数只能有一个;
  • 可变参数必须放在形参列表的最后;
import java.util.Arrays;

/**
 * 可变参数
 */
public class MethodDemo {
    public static void main(String[] args) {
        sum();//不传参数
        sum(10);//1个参数
        sum(11,22,33);//多个参数
        sum(new int[]{11,22,33});//传数组


        sum1(10);//1个参数
        sum1(111,22,33);//多个参数

    }

    /**
     * 一个形参列表中可变参数只能有一个;
     * @param num 可变参数
     */
    public static void sum(int...num){
        //可变参数在方法内部本质上就是一个数组;
        System.out.println("元素个数:" + num.length);
        System.out.println("元素的内容" + Arrays.toString(num));
    }

    /**
     *可变参数必须放在形参列表的最后;
     * @param age 形参列表
     * @param num 可变参数
     */
    public static void sum1(int age,int...num){
        //可变参数在方法内部本质上就是一个数组;
        System.out.println("元素个数:" + num.length);
        System.out.println("元素的内容" + Arrays.toString(num));
    }
}

(2)集合操作工具类Collections:

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

1.Collections排序相关的API:

  • 使用范围:只能对于List集合的排序
方法名称

说明

public static <T> void sort(List< T> List, Comparator<? super T> c)将集合按照指定规则排序
public static <T> void sort(List<T> list)将集合中的元素按照默认规则排序,注意:本排序方式不可以直接对自定义类型的List集合排序,除非自定义类型实现了比较规则Comparable接口

 2.Collections常见的API:

方法名称说明
public static <T> boolean addAll(Collection<? super T> c, T...elements)给集合对象批量添加元素
public static void shuffle(List<?> List)打乱集合顺序

3.API使用代码如下:

import java.util.*;

/**
 * 目标:Collections工具类使用,常见API
 * 1.给集合对象批量添加元素
 * -public static <T> boolean addAll(Collection<? super T> c, T...elements)
 * 2.打乱集合顺序
 * public static void shuffle(List<?> List)
 * 3.将集合元素按照默认规则排序
 * public static <T> void sort(List<T> list)
 * 4.将集合元素按照制定规则排序
 * public static <T> void sort(List<T> list.Comparator<? super T>)
 */
public class CollectionsDemo01 {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        //1.给集合对象批量添加元素
//        names.add("大大");
//        names.add("小小");
//        names.add("青青");
        Collections.addAll(names,"大大","小小","青青");
        System.out.println(names);//[大大, 小小, 青青]

        //2.打乱集合顺序
        Collections.shuffle(names);
        System.out.println(names);//[青青, 小小, 大大]

        //3.将集合元素按照默认规则排序(排值特性的元素)
        List<Integer> list = new ArrayList<>();
        Collections.addAll(list,11,35,22,10);
        System.out.println(list);//[11, 35, 22, 10]
        Collections.sort(list);
        System.out.println(list);//[10, 11, 22, 35]

        //4.将集合元素按照制定规则排序
        List<Apple> apples1 = new ArrayList<>();
        apples1.add(new Apple("苹果1","红色",9.9,500));
        apples1.add(new Apple("苹果2","绿色",19.9,500));
        apples1.add(new Apple("苹果3","青色",29.9,300));
        apples1.add(new Apple("苹果4","黄色",39.9,200));

        //4.方式一:public static <T> void sort(List<T> list)
        Collections.sort(apples1);//Apple类已经重写了比较规则
        System.out.println(apples1);

        //4.方式2:sort方法自带比较器对象
        // public static <T> void sort(List< T> List, Comparator<? super T> c)
//
//        Collections.sort(apples1, new Comparator<Apple>() {
//            @Override
//            public int compare(Apple o1, Apple o2) {
//                return Double.compare(o1.getPrice(), o2.getPrice());
//            }
//        });

        //代码简化
        Collections.sort(apples1, ( o1,  o2) -> Double.compare(o1.getPrice(), o2.getPrice()));
        System.out.println(apples1);
    }
}


class Apple implements Comparable<Apple>{
    private String name;
    private String color;
    private Double price;
    private int weight;

    public Apple() {
    }

    public Apple(String name, String color, Double price, int weight) {
        this.name = name;
        this.color = color;
        this.price = price;
        this.weight = weight;
    }

    public String getName() {
        return name;
    }

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

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }

    @Override
    public String toString() {
        return "Apple{" +
                "name='" + name + '\'' +
                ", color='" + color + '\'' +
                ", price=" + price +
                ", weight=" + weight +
                '}';
    }

    /**
     * 自定义制定规则:方式一
     * o1.compareTo(o2)
     * @param o
     * @return如果认为第一个元素大于第二个元素返回正整数即可。
     * 如果认为第一个元素小于第二个元素返回负整数即可。
     * 如果认为第一个元素等于第二个元素返回0即可,此时TreeSet集合只会保留一个元素,认为两者重复。
     */
    @Override
    public int compareTo(Apple o) {
        return this.weight - o.weight;//List集合重复会保留
        //List集合允许元素重复不需要以下步骤
//        //如:按照重量进行比较
//        //return this.weight - o.weight;//会去掉重量重复的元素
//        return this.weight - o.weight >= 0 ? 1 : -1;//可以保留重量重复的元素
    }
}


http://www.kler.cn/a/7318.html

相关文章:

  • Vue 3 中的 ref 完全指南
  • 要查看你的系统是 x64(64位)还是 x86(32位),可以按照以下步骤操作
  • Amazon Web Services (AWS)
  • 跟我学C++中级篇——RAII
  • 蓝桥杯-洛谷刷题-day3(C++)
  • # ubuntu 安装的pycharm不能输入中文的解决方法
  • 【NLP入门教程】五、命名实体识别
  • 微服务学习-SpringCloud -Nacos (单机部署)
  • Windows 上使用 VS2022 使用远程Linux 系统调试运行代码
  • Linux中的算法分离手段
  • Git Commit Message 应该怎么写?
  • 【案例实践】MCM箱模型实践技术应用与O3形成途径、生成潜势、敏感性分析
  • 【创作赢红包】Activity初窥门径
  • C#,初学琼林(04)——查询(搜索)数组内指定(值)的元素与全文检索“倒排序”技术的实现代码源程序
  • OMG,太牛了!!!华为18级架构师总结出24W字Java面试手册
  • 伪数组和真数组的区别
  • 批发进销存管理软件,商品分类管理,对商品分类批量价格管理,商品分类导入导出的操作
  • acwing1047. 糖果
  • 技术宅小伙:看看面试官都问了些什么(Java系列)
  • SpringCloud服务注册中心——Eureka
  • 华为阿里版ChatGPT横空出世,谁的成效更好呢?
  • 【云原生进阶之容器】第五章容器运行时5.2节--容器运行时接口规范CRI
  • [论文速览] Sparks of Artificial General Intelligence: Early experiments with GPT-4
  • esxi的安装配置以及新建虚拟机
  • Java核心技术知识点笔记—视图与包装器
  • 【视频分割】【深度学习】MiVOS官方Pytorch代码--Propagation模块解析