Collections集合工具类的常用方法
java.util.Collections集合工具类
addAll(Collection<? super T> c, T… elements)
static <T> boolean addAll(Collection<? super T> c, T... elements)
将所有指定的元素添加到指定的集合
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
Collections.addAll(list,1, 3, 4, 5);
System.out.println(list);
}
shuffle(List<?> list)
static void shuffle(List<?> list)
使用默认的随机源随机排列指定的列表。
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
Collections.addAll(list,1, 3, 4, 5);
System.out.println(list);
Collections.shuffle(list);
System.out.println(list);
sort(List list)
public static <T> void sort(List<T> list):
将集合元素按照默认规则排序
【注意事项】:使用sort(list<T> list)前提:被排序的集合里边的元素,
必须实现Comparable接口,重写接口中的方法compareTo()定义排序规则
-----------------------------------------------------------
-Comparable接口排序规则:
(自己)this - 参数:升序
参数 - this : 降序
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<>();
Collections.addAll(list1,3,1,5,4);
System.out.println(list1);
Collections.sort(list1);
System.out.println(list1);
}
- 自定义Person类,必须实现Comparable接口,重写接口中的方法compareTo()定义排序规则
public class Person implements Comparable<Person>{
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
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 int compareTo(Person o) {
return this.getAge() - o.getAge();
}
}
public static void main(String[] args) {
ArrayList<Person> list2 = new ArrayList<>();
Person one = new Person("1", 1);
Person two = new Person("2", 3);
Person three = new Person("3", 2);
Collections.addAll(list2, one, two, three);
System.out.println(list2);
Collections.sort(list2);
System.out.println(list2);
}
sort(List list, Comparator<? super T> c)
static <T> void sort(List<T> list, Comparator<? super T> c)
根据指定的比较器引起的顺序对指定的列表进行排序。
------------------------------------------------------------------------
comparator和comparable的区别:
comparable:this(自己)和参数(别人)比较,自己需要实现comparable接口,重写比较的规则compareTo方法
comparator:相当于找一个第三方裁判比较两个
-----------------------------------------------------------------------
comparator的排序规则:
o1 - o2 :升序
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
Collections.addAll(list, 1,3,4,5,3);
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
System.out.println(list);
}
public class Students {
private String name;
private int age;
public Students() {
}
public Students(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Students{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
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;
}
}
public static void main(String[] args) {
Students one = new Students("a李飞", 22);
Students two = new Students("赵亚", 21);
Students three = new Students("b张楠", 22);
ArrayList<Students> list1 = new ArrayList<>();
Collections.addAll(list1, one, two, three);
System.out.println(list1);
Collections.sort(list1, new Comparator<Students>() {
@Override
public int compare(Students o1, Students o2) {
int result = o1.getAge() - o2.getAge();
if(result == 0){
return o1.getName().charAt(0) - o2.getName().charAt(0);
}
return result;
}
});
System.out.println(list1);
}