目录
可变参数
Collections工具类
Collections的常用静态方法
实例演示
可变参数
可变参数
- 就是一种特殊形参,定义在方法、构造器的形参列表里,格式是:数据类型...参数名称
可变参数的特点和好处
- 特点:可以不传数据给它;可以传一个或者同时传多个数据给它;也可以传一个数组给它。
- 好处:常常用来灵活的接收数据。
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集合中的元素顺序
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);
}
}
运行结果:
排序部分一
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方法:
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方法)
排序部分二
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课程