实现方式:
1 Collections.sort(List<T> list, Comparator<? super T> c);
2 list.sort(Comparator<? super T> c)
3 stream实现
1和2是同一个;
1 list.sort(Comparator<? super T> c)
userlist.sort(new ComparatorUser());
2 Collections.sort(List<T> list, Comparator<? super T> c);
Collections.sort(userlist, new ComparatorUser());
3 stream实现
userlist = userlist.stream() .sorted((x, y) -> { int flag = x.getAge().compareTo(y.getAge()); if (flag == 0) { return x.getName().compareTo(y.getName()); } else { return flag; } }) .collect(Collectors.toList());
全代码
测试类
import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; /** * ClassName: Test<br/> * Description: <br/> * date: 2018/11/8 下午4:15<br/> * * @author chengluchao * @since JDK 1.8 */ public class Test { static List<User> userlist = new ArrayList(); static { userlist.add(new User("user001", "4")); userlist.add(new User("user002", "1")); userlist.add(new User("user003", "5")); userlist.add(new User("user004", "2")); userlist.add(new User("user005", "5")); userlist.add(new User("user006", "3")); userlist.add(new User("user007", "6")); } public static void main(String[] args) { java7impl(); print(); } /** * 基于java7,6,5的实现 */ static void java7impl() { userlist.sort(new ComparatorUser()); } /** * 基于java7,6,5的实现 */ static void java7impl2() { Collections.sort(userlist, new ComparatorUser()); } /** * 基于java8的实现 * 不需要写ComparatorUser类 */ static void java8impl() { Collections.sort(userlist, (x, y) -> { int flag = x.getAge().compareTo(y.getAge()); if (flag == 0) { return x.getName().compareTo(y.getName()); } else { return flag; } }); } /** * 基于java8的实现 * stream实现,更为灵活 */ static void java8impl2() { userlist = userlist.stream() .sorted((x, y) -> { int flag = x.getAge().compareTo(y.getAge()); if (flag == 0) { return x.getName().compareTo(y.getName()); } else { return flag; } }) .collect(Collectors.toList()); } static void print() { for (User user : userlist) { System.out.println(user.getAge() + "," + user.getName()); } } }
user类
/** * ClassName: User<br/> * Description: <br/> * date: 2018/11/8 下午4:10<br/> * * @author chengluchao * @since JDK 1.8 */ public class User { String name; String age; public User(String name, String age) { this.name = name; this.age = age; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
import java.util.Comparator; public class ComparatorUser implements Comparator<User> { //比较的逻辑实现::://首先比较年龄,如果年龄相同,则比较名字 public int compare(User user0, User user1) { int flag = user0.getAge().compareTo(user1.getAge()); if (flag == 0) { return user0.getName().compareTo(user1.getName()); } else { return flag; } } }
输出结果:
1,user002
2,user004
3,user006
4,user001
5,user003
5,user005
6,user007