Arrays 是用来操作数组的工具类, Objects 是用来操作Object 的工具类,Collections 是用来操作 Collection 的工具类
/**
* Collection常用方法介绍
*
* @author twb
* @// TODO: 2021/3/28
* @version 1.8
*/
public class Demo3 {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(50);
list.add(20);
list.add(15);
list.add(62);
list.add(7);
//sort排序
System.out.println("排序之前:"+list.toString());
Collections.sort(list);
System.out.println("排序之后:"+list.toString());//默认从小到大排序,也可以根据自己的需求重写compare方法来进行排序
//二分查找
int index = Collections.binarySearch(list,20); //如果查找的元素不存在则返回负值,成功则返回该元素的下标
System.out.println("二分查找结果:"+index);
//copy复制
List<Integer> dest = new ArrayList<>();//必须保证新的dest大小和list相等
for (int i = 0; i < list.size(); i++) {
dest.add(0);//以list大小为基准将dest元素初始值全部赋为0
}
Collections.copy(dest,list);
System.out.println("复制之后的list:"+dest.toString());
//reverse反转
Collections.reverse(list);
System.out.println("反转之后的list:"+list.toString());
//shuffle打乱
Collections.shuffle(list);
System.out.println("打乱之后的list:"+list.toString());//每次运行的结果顺序都不一样
//补充:
//1.list转为数组
Integer[] arr = list.toArray(new Integer[0]);//需要给定大小,默认给0,如果大小超过list长度,则超过的部分为null
System.out.println("list转为arr数组为:"+Arrays.toString(arr));
//2.数组转为list
String[] str = {"张三","李四","王五"};
//集合是一个受限集合,不能 添加和删除元素
List<String> listStr = Arrays.asList(str);
System.out.println("数组转为集合:"+listStr.toString());
//如果是基本数据类型则需要转化为包装类
Integer[] array = {100,200,300,400,500};
List<Integer> listInt = Arrays.asList(array);
System.out.println(Arrays.toString(array));
}
}
排序之前:[50, 20, 15, 62, 7]
排序之后:[7, 15, 20, 50, 62]
二分查找结果:2
复制之后的list:[7, 15, 20, 50, 62]
反转之后的list:[62, 50, 20, 15, 7]
打乱之后的list:[7, 62, 50, 20, 15]
list转为arr数组为:[7, 62, 50, 20, 15]
数组转为集合:[张三, 李四, 王五]
[100, 200, 300, 400, 500]
比较器比较
/**
* @author Honson
* @date 2022/9/2
*/
public class Person {
private String name;
private String age;
public Person() {
}
public Person(String name, String age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
lections.addAll(people,
new Person("张三",13),
new Person("李四",15 ),
new Person("王五", 18),
new Person("赵六", 20)
);
Collections.sort(people, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge()- o2.getAge();
}
});
for (int i = 0; i < people.size(); i++) {
System.out.println(people.get(i));
}
Collection和Collections的区别
Collection是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。实现该接口的类主要有List和Set,该接口的设计目标是为了各种具体的集合提供最大化的统一的操作方式。
Collections是针对集合类的一个包裹类,它提供了一系列静态方法实现对各种集合的搜索、排序以及线程安全化等操作,其中的大多数方法都是用于处理线性表。Collections类不能实例化,如同一个工具类,服务于Collection框架。如果在使用Collections类的方法时,对应的Collection对象null,则这些方法都会抛出NullPointerException。