Collections集合工具类的方法
package demo20;
import java.util.ArrayList;
import java.util.Collections;
/*
java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:
public static <T> boolean addAll(Collection<T> c,T... elements);忘集合中添加一些元素。
public static void shuffle(list<?> list)打乱顺序:打乱集合顺序
*/
public class Demo01Collections {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
//往集合中添加多个元素
// list.add("a");
// list.add("b");
// list.add("c");
// list.add("e");
// list.add("f");
//public static <T> boolean addAll(Collection<T> c,T... elements);忘集合中添加一些元素。
Collections.addAll(list, "a", "b", "c", "d", "e");
System.out.println(list);//[a, b, c, d, e]
//public static void shuffle(list<?> list)打乱顺序:打乱集合顺序
Collections.shuffle(list);
System.out.println(list);//[a, b, c, d, e],[e, b, c, d, a]
}
}
Collections集合工具类的方法
package demo20;
import java.util.ArrayList;
import java.util.Collections;
/*
java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:
public static <T> void sort(list<T> list);将集合中元素按照默认规则排序
注意:
sort(list<T> list)使用前提
被排序的集合里边存储的元素,必须实现Comparable,重写接口中的方法compareTo定义排序的规则
Comparable接口的排序规则:
自己(this)-参数:升序
*/
public class Demo02Sort {
public static void main(String[] args) {
ArrayList<Integer> list01 = new ArrayList<>();
list01.add(1);
list01.add(3);
list01.add(2);
System.out.println(list01);//[1, 3, 2]
//public static <T> void sort(list<T> list);将集合中元素按照默认规则排序
Collections.sort(list01);//默认是升序
System.out.println(list01);//[1, 2, 3]
ArrayList<String> list02 = new ArrayList<>();
list02.add("a");
list02.add("c");
list02.add("b");
System.out.println(list02);//[a, c, b]
Collections.sort(list02);//默认是升序
System.out.println(list02);//[a, b, c]
ArrayList<Person> list03 = new ArrayList<>();
list03.add(new Person("张三",18));
list03.add(new Person("李四",20));
list03.add(new Person("王五",15));
System.out.println(list03);//[Person [name=张三, age=18], Person [name=李四, age=20], Person [name=王五, age=15]]
Collections.sort(list03);
System.out.println(list03);//[Person [name=王五, age=15], Person [name=张三, age=18], Person [name=李四, age=20]]
//[Person [name=李四, age=20], Person [name=张三, age=18], Person [name=王五, age=15]]
}
}
package demo20;
public class Person implements Comparable<Person> {
private String name;
private int 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 Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
//重写排序的规则
@Override
public int compareTo(Person o) {
// TODO Auto-generated method stub
//return 0;//认为元素都是相同的
//自定义比较的规则,比较两个人的年龄(this,参数Person)
//return this.getAge() - o.getAge();//年龄升序排序
return o.getAge() - this.getAge();//年龄降序排序
}
}
Collections集合工具类的方法
package demo20;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/*
java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:
public static <T> void sort(list<T> list,Comparator<? super T> );将集合中元素按照指定规则排序
Comparator和Comparable的区别
Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法
Comparator:相当于找一个第三方的裁判,比较两个
Comparator的排序规则:
o1 - o2:升序
*/
public class Demo03Sort {
public static void main(String[] args) {
ArrayList<Integer> list01 = new ArrayList<>();
list01.add(1);
list01.add(3);
list01.add(2);
System.out.println(list01);//[1, 3, 2]
Collections.sort(list01,new Comparator<Integer>() {
//重写比较的规则
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;//升序排序
//return o2 - o1;//降序排序
}
});
System.out.println(list01);
ArrayList<Student> list02 = new ArrayList<>();
list02.add(new Student("a迪丽热巴",18));
list02.add(new Student("古力娜扎",20));
list02.add(new Student("杨幂",17));
list02.add(new Student("b杨幂",18));
System.out.println(list02);
// Collections.sort(list02,new Comparator<Student>(){
// @Override
// public int compare(Student o1, Student o2) {
// //按照年龄升序排序
// return o1.getAge()-o2.getAge();//升序排序
// }
// });
//扩展
Collections.sort(list02,new Comparator<Student>(){
@Override
public int compare(Student o1, Student o2) {
//按照年龄升序排序
int result = o1.getAge()-o2.getAge();
//如果两个人年龄相同,再使用姓名第一个字首字母比较
if(result == 0) {
result = o1.getName().charAt(0) - o2.getName().charAt(0);
}
return result;
}
});
System.out.println(list02);
}
}
package demo20;
public class Student {
private String name;
private int age;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, int age) {
super();
this.name = name;
this.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 String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}