JavaSE——集合框架二(1/6)-前置知识-可变参数、Collections工具类

目录

可变参数

Collections工具类

Collections的常用静态方法

实例演示


可变参数

可变参数

  • 就是一种特殊形参,定义在方法、构造器的形参列表里,格式是:数据类型...参数名称

可变参数的特点和好处

  • 特点:可以不传数据给它;可以传一个或者同时传多个数据给它;也可以传一个数组给它。
  • 好处:常常用来灵活的接收数据。
java 复制代码
import java.util.Arrays;

public class ParamTest {
    public static void main(String[] args) {
        test();                     //不传数据
        test(10);            //传输一个数据
        test(10,20);         //传输多个数据
        test(new int[]{10,20,30});  //传输一个数组
    }
    public static void test(int...nums){
        //可变参数在方法内部,本质就是一个数组
        System.out.println(nums.length);
        System.out.println(Arrays.toString(nums));
        System.out.println("---------------------");
    }
}

运行结果:

可变参数的注意事项

  • 可变参数在方法内部就是一个数组
  • 一个形参列表中可变参数只能有一个
  • 可变参数必须放在形参列表的最后面

Collections工具类

  • 和Collection区分开来,Collections是一个用来操作集合的工具类。

Collections的常用静态方法

方法名称 说明
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>c) 对List集合中元素,按照比较器对象指定的规则进行排序

实例演示

给集合批量添加元素、打乱List集合中的元素顺序

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

public class CollectionsTest {
    public static void main(String[] args) {
        //1.public static<T> boolean addAll(Collection<? super T>c,T...elements)
        //给集合批量添加元素
        List<String> names = new ArrayList<>();
        Collections.addAll(names,"张三","王五","李四","张麻子");
        System.out.println(names);

        //2.public static void shuffle(List<?> list)
        //打乱List集合中的元素顺序
        Collections.shuffle(names);
        System.out.println(names);
    }
}

运行结果:

排序部分一

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

public class CollectionsTest {
    public static void main(String[] args) {
        //3.public static<T> void sort(List<T>list)
        //对List集合中的元素进行升序排序
        List<Integer> list = new ArrayList<>();
        Collections.addAll(list,3,5,2);
        Collections.sort(list);
        System.out.println(list);
    }
}

运行结果:

当给对象排序时,就需要重写对象内部的compareTo方法:

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

public class CollectionsTest {
    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student("至尊宝",26,165.5));
        students.add(new Student("蜘蛛精",23,169.7));
        students.add(new Student("牛魔王",22,183.5));
        students.add(new Student("紫霞",22,169.8));
        Collections.sort(students);   //自定义排序:按年龄升序排序
        System.out.println(students);
    }
}

运行结果:(输出结果重写了toString方法)

排序部分二

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

public class CollectionsTest {
    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student("至尊宝",26,165.5));
        students.add(new Student("蜘蛛精",23,169.7));
        students.add(new Student("牛魔王",22,183.5));
        students.add(new Student("紫霞",22,169.8));

        //4.public static<T> void sort(List<T> list, Comparator<? super T>c)
        //对List集合中元素,按照比较器对象指定的规则进行排序
        Collections.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return Double.compare(o1.getHeight(),o2.getHeight());
            }
        });         //如果两种自定义排序都存在,则就近使用这个排序规则
        System.out.println(students);
    }
}

运行结果:


END


学习自:黑马程序员------JavaSE课程

相关推荐
Nontee1 小时前
MySQL 插入冲突了怎么办?两种处理方式入门笔记
数据库·笔记·mysql
浔溺1 小时前
al+大数据每日学习笔记26
笔记·学习
丘山一郎2 小时前
Spring 中的IOC控制反转 和DI依赖注入
java·后端·spring
码视野2 小时前
基于 Spring Boot + Vue3 的【大学英语四六级 (CET-4/6) 作文智能评分与句式润色系统】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端·vue3
xx~t2 小时前
嵌入式——进程与线程1
linux·c语言·学习·嵌入式·进程与线程
MetaLite2 小时前
Spring-AOP自调用为什么失效-AopContext真能解决吗
java·后端·spring
大模型码小白2 小时前
AI 对话流性能调优:万级消息的虚拟滚动落地
java·大数据·前端·javascript·人工智能·算法·机器学习
m0_547486662 小时前
《JavaScript核心原理 》全套PPT课件2026
开发语言·javascript·ecmascript
老当益壮梁奶奶2 小时前
Linux软件编程学习笔记(七):线程分离与线程间通信详解
linux·c语言·c++·笔记·学习
许彰午2 小时前
14-字段级SM4加密与SM2签名
java·低代码·架构