java 集合重要概念(Collections集合工具类之 sort方发)自定义的数据类型存储到集合中时如果需要按照一定的顺序存储的话 就 需要实现Compareable接口重写 compareto方法定义排序规则
使用场景:自定义的数据类型存储到集合中时如果需要按照一定的顺序存储的话 就 需要实现Compareable接口重写 compareto方法定义排序规则, 不然就会按照添加的顺序进行默认存储
需要存储再集合中排序的自定义类Person
public class Person implements Comparable<Person>{ private String name; private Integer age; public Person() { } public Integer getAge() { return age; } public Person(String name, Integer age) { this.name = name; this.age = age; } public Person(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override public int compareTo(Person o) { return this.getAge()-o.getAge(); } }
测试代码
public class AugrumentDemo { public static void main(String[] args) { ArrayList<Person> arrayList = new ArrayList(); arrayList.add(new Person("1",22)); arrayList.add(new Person("2",10)); //排序前 for(Person p : arrayList){ System.out.println(p); } //排序后 Collections.sort(arrayList); for(Person p : arrayList){ System.out.println(p); } }
//第二种使用方式(代码少)
//第二种解决方式!!!!
Collections.sort(arrayList, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
int rs = o1.getAge()-o2.getAge();
//如果age时同样的 那么就按照姓名排序
if(rs == 0){
rs = o1.getName().charAt(0) - o2.getName().charAt(0);
}
return rs;
}
});
坚持