总结
- Collections 是一个操作 Set、List 和 Map 等集合的工具类
- Collections 中提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法
实现方法
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Test3 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("b");
list.add("a");
list.add("cc");
list.add("cc");
list.add("ab");
System.out.println(list);
//reverse(List):反转 List 中元素的顺序
Collections.reverse(list);
System.out.println(list);
//shuffle(List):对 List 集合元素进行随机排序
Collections.shuffle(list);
System.out.println(list);
//sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序
Collections.sort(list);
System.out.println(list);
//swap(List,int, int):将指定 list 集合中的 i 处元素和 j 处元素进行交换
Collections.swap(list, 1, 4);
System.out.println(list);
//Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素
String max = Collections.max(list);
System.out.println(max);
//Object min(Collection):根据元素的自然顺序,返回给定集合中的最小元素
String min = Collections.min(list);
System.out.println(min);
//int frequency(Collection,Object):返回指定集合中指定元素的出现次数
Collections.frequency(list, "cc");
System.out.println(Collections.frequency(list, "cc"));//2
//sort(List,Comparator):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
Person3 p3 = new Person3(11,"四十");
Person3 p1 = new Person3(8,"李四");
Person3 p2 = new Person3(18,"王二");
Person3 p4 = new Person3(20,"王五");
//创建list集合接收Person3类型数据
List<Person3> list1 = new ArrayList<Person3>();
list1.add(p1);
list1.add(p2);
list1.add(p3);
list1.add(p4);
//写入时的顺序
for(Person3 stu :list1) {
System.out.println("name="+stu.name+",age="+stu.age);
}
Collections.sort(list1, new Person3());
System.out.println("-------------------------");
//按照年龄升序排列后的list
for(Person3 stu :list1) {
System.out.println("name="+stu.name+",age="+stu.age);
}
}
//定义一个person类实现comparator接口,比较的作用
class Person3 implements Comparator<Person3>{
int age;
String name;
Person3(){}
Person3(int age,String name) {
this.age = age;
this.name = name;
}
@Override
public int compare(Person3 o1, Person3 o2) {
if(o1.age>o2.age) {
return 1;
}else if(o1.age<o2.age) {
return -1;
}
return 0;
}
}