package com.test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
class PersonDemo{
int age;
public PersonDemo(int age){
this.age = age;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return String.valueOf(age);
}
}
class PersonDemo2 implements Comparable<PersonDemo2>{
int age;
public PersonDemo2(int age){
this.age = age;
}
@Override
public int compareTo(PersonDemo2 o) {
return Integer.compare(this.age, o.age);
}
@Override
public String toString() {
return String.valueOf(age);
}
}
public class Java7NewFeatures {
public static void main(String[] args) {
/*数组排序*/
Integer[] a1 = {1,1,3,2,4};
Arrays.sort(a1,new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o2, o1);//compare不会去重,如果想去重的话就判断当数字相等的时候返回-1
}
});
System.out.println(Arrays.toString(a1));
/*集合排序*/
List<Integer> a = new ArrayList<>();
a.add(1);
a.add(3);
a.add(2);
a.add(4);
/*第一种:集合工具类sort自制排序*/
Collections.sort(a, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o1, o2);
}
});
System.out.println(a);
//第二种:调用集合自身方法
a.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o2, o1);
}
});
//lambda表达式简化写法
a.sort((o1,o2)->Integer.compare(o2, o1));
System.out.println(a);
/*匿名内部类方式实现Conparator接口自制排序*/
Set<PersonDemo> set = new TreeSet<>(new Comparator<PersonDemo>() {
@Override
public int compare(PersonDemo o1, PersonDemo o2) {
return Integer.compare(o1.age, o2.age);
}
});
set.add(new PersonDemo(2));
set.add(new PersonDemo(1));
set.add(new PersonDemo(3));
System.out.println(set);
/*在类中实现Compatable接口自制排序*/
Set<PersonDemo2> set2 = new TreeSet<>();
set2.add(new PersonDemo2(2));
set2.add(new PersonDemo2(1));
set2.add(new PersonDemo2(3));
System.out.println(set2);
}
}
切记Collections.sort(list)