使用Java 8 Stream list排序
先看实体类
public class UserSimple {
private int id;
private String name;
public UserSimple(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "UserSimple{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
1.按id 排序
//按照id来排序
List<UserSimple> usersimple =new ArrayList<>();
usersimple.add(new UserSimple(1,"10,1"));
usersimple.add(new UserSimple(5,"10,2"));
usersimple.add(new UserSimple(2,"10,5"));
usersimple.add(new UserSimple(7,"10,7"));
usersimple.add(new UserSimple(3,"10,3"));
List<UserSimple> usersimple1 =new ArrayList<>();
usersimple1 = usersimple.stream().sorted(Comparator.comparingInt(UserSimple::getId))
.collect(Collectors.toList());
usersimple1.forEach(System.out::println);
2. 按 name 排序
(取10,?中的? 进行排序)
public static void main(String[] args) {
List<UserSimple> usersimple =new ArrayList<>();
usersimple.add(new UserSimple(1,"10,1"));
usersimple.add(new UserSimple(5,"10,2"));
usersimple.add(new UserSimple(2,"10,5"));
usersimple.add(new UserSimple(7,"10,7"));
usersimple.add(new UserSimple(3,"10,3"));
List<UserSimple> usersimple2 =new ArrayList<>();
usersimple2 = usersimple.stream().sorted((a,b)->{
String[] v1 = a.getName().split(",");
String[] v2 = b.getName().split(",");
if(v2.length !=2){
return -1;
}
if(v1.length !=2){
return -1;
}
return Str2Int(v1[1]) - Str2Int(v2[1]);
}).collect(Collectors.toList());
System.out.println("=====");
usersimple2.forEach(System.out::println);
}
public static int Str2Int(String strVal) {
if (strVal == null)
return 0;
int nVal = 0;
try {
nVal = Integer.valueOf(strVal);
} catch (Exception e) {
return 0;
}
return nVal;
}