Collections的使用

操作数组我们使用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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值