欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Collections的使用

程序员文章站 2022-03-09 19:44:02
...

操作数组我们使用Arrays这个工具类,
操作集合呢?
用Collections!

说说Collections和Collection的区别
Collections是针对集合进行操作的工具类,都是静态方法。
Collection是单列集合的顶层接口,子接口List和Set。
下面是Collection的常用方法:
public static void sort(List list):排序,默认情况下是自然排序
public static int binarySearch(Collection c, T key):二分查找法
public static max(Collection<?> coll):最大值
public static void reverse(List<?> list):反转
public static void shuffle(List<?> list):随机置换

例子:
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add(30);
list.add(20);
list.add(50);
list.add(10);
list.add(40);
list.add(70);
list.add(80);
list.add(40);
System.out.println(list);

	Collections.sort(list);
	System.out.println(list);
	
	//集合中的二分查找不需要排序 返回的当前元素所有集合中的索引值
	
	int binarySearch = Collections.binarySearch(list, 50);
	System.out.println(binarySearch);
	
	Integer max = Collections.max(list);
	System.out.println(max);
	
	Collections.reverse(list);
	System.out.println(list);
	//逆序输出
	Collections.sort(list);
	Collections.reverse(list);
	System.out.println(list);
	//随机置换
	Collections.shuffle(list);
	System.out.println(list);
}

刚才针对的是ArrayList的集合进行操作,是否可以自定义一个类型也进行这样的操作?
先定义一个Student类,
public class Student {
private String name;
private int age;
public Student(String name, int age) {
	super();
	this.name = name;
	this.age = age;
}
public Student() {
	super();
	// TODO Auto-generated constructor stub
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public int getAge() {
	return age;
}
public void setAge(int age) {
	this.age = age;
}
@Override
public String toString() {
	return "Student [name=" + name + ", age=" + age + "]";
}

接下来进行操作:
public static void main(String[] args) {

	ArrayList<Student> list = new ArrayList<>();
	list.add(new Student("张学友",16));
	list.add(new Student("郭富城",34));
	list.add(new Student("刘德华",24));
	list.add(new Student("张国荣", 18));
	
	System.out.println(list);
	
	Collections.sort(list);//对集合进行默认排序
	System.out.println(list);
	
	Collections.sort(list, new Comparator<Student>() { //使用内部类实现接口,再让自定义对象进行我们所有规定的排序去完成

		@Override
		public int compare(Student o1, Student o2) {
			
			return o2.getAge()-o1.getAge();
		}
	});
	System.out.println(list);
}