实现方式: 1 Collections.sort(Listlist, Comparator c); 2 list.sort(Comparator c) 3 stream实现 1和2是同一个;
1 list.sort(Comparator 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 * Description: * date: 2018/11/8 下午4:15 * * @author chengluchao * @since JDK 1.8 */public class Test { static Listuserlist = 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 * Description: * date: 2018/11/8 下午4:10 * * @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{ //比较的逻辑实现::://首先比较年龄,如果年龄相同,则比较名字 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,user0043,user0064,user0015,user0035,user0056,user007
posted @ 2018-11-08 17:07 阅读( ...) 评论( ...)