package _5_34;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.function.Function;
public class MySort<R, E extends Comparable<R>> {
public void Sort(List<E> list, Function<E, R> f, String sort) {
Collections.sort(list, new Comparator<E>() {
public int compare(E a, E b) {
int ret = 0;
R a1 = f.apply(a);
R b1 = f.apply(b);
if (sort != null && "desc".equals(sort)) {
ret = b1.compareTo(a1);
} else {
ret = a1.compareTo(b1);
}
return ret;
}
});
}
}
package _5_34;
import java.util.ArrayList;
import java.util.List;
import java.text.SimpleDateFormat;
public class Test {
public static void main(String[] args) throws Exception {
List<UserInfo> list = new ArrayList<UserInfo>();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
list.add(new UserInfo(3, "Chang", formatter.parse("2017-12-01"), 11));
list.add(new UserInfo(1, "Li", formatter.parse("2016-10-01"), 30));
list.add(new UserInfo(2, "Zhen", formatter.parse("2015-10-01"), 20));
// Sort by userId descending
MySort<UserInfo, Integer> sortList1 = new MySort<UserInfo, Integer>();
sortList1.Sort(list, x -> x.getUserId(), "desc");
System.out.println("------按 userId 降序排序------");
for (UserInfo user : list) {
System.out.println(user.toString());
}
// Sort by username
MySort<UserInfo, String> sortList2 = new MySort<UserInfo, String>();
sortList2.Sort(list, x -> x.getUsername(), null);
System.out.println("------按 username 排序------");
for (UserInfo user : list) {
System.out.println(user.toString());
}
// Sort by birthDate
MySort<UserInfo, java.util.Date> sortList3 = new MySort<UserInfo, java.util.Date>();
sortList3.Sort(list, x -> x.getBirthDate(), null);
System.out.println("------按 birthDate 排序------");
for (UserInfo user : list) {
System.out.println(user.toString());
}
}
}
package _5_34;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
public class UserInfo implements Serializable {
private Integer userId;
private String username;
private java.util.Date birthDate;
private Integer age;
private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
public UserInfo() {
}
public UserInfo(Integer userId, String username, java.util.Date birthDate, Integer age) {
this.userId = userId;
this.username = username;
this.birthDate = birthDate;
this.age = age;
}
public Integer getUserId() {
return this.userId;
}
public void setUserId(Integer value) {
this.userId = value;
}
public String getUsername() {
return this.username;
}
public void setUsername(String value) {
this.username = value;
}
public java.util.Date getBirthDate() {
return this.birthDate;
}
public void setBirthDate(java.util.Date value) {
this.birthDate = value;
}
public void setBirthDatestr(String value) throws Exception {
setBirthDate(formatter.parse(value));
}
public String getBirthDatestr() {
return formatter.format(getBirthDate());
}
public Integer getAge() {
return this.age;
}
public void setAge(Integer value) {
this.age = value;
}
public String toString() {
return new StringBuffer().append(getUserId()).append("; ").append(getUsername()).append("; ").append(getBirthDatestr()).append("; ").append(getAge().toString());
}
}
94

被折叠的 条评论
为什么被折叠?



