1,Comparator接口 —— 重写Comparator
public class User {
private String id;
private String name;
public User (String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
public class ComparatorTest {
public static void main(String[] args) {
List list = new ArrayList<>();
User user1 = new User("222", "张三");
User user2 = new User("333", "李四");
User user3 = new User("111", "王五");
list.add(user1);
list.add(user2);
list.add(user3);
System.out.println("排序前:");
for (User user : list) {
System.out.println(user.toString());
}
System.out.println("排序后:");
// 调用排序方法,进行排序
sortById(list);
for (User user : list) {
System.out.println(user.toString());
}
}
/**
* 根据集合中的对象id,进行升序排序
*/
public static void sortById(List list) {
Collections.sort(list, new Comparator() {
@Override
public int compare(User u1, User u2) {
String id1 = u1.getId();
String id2 = u2.getId();
// 字符串忽略大小写,进行升序排序
return pareToIgnoreCase(id2);
}
});
}
}
排序前:
User{id='222', name='张三'}
User{id='333', name='李四'}
User{id='111', name='王五'}
排序后:
User{id='111', name='王五'}
User{id='222', name='张三'}
User{id='333', name='李四'}
2,Comparable接口 —— 实体实现Comparable接口,重写compareTo() 方法
public class User implements Comparable{
private String id;
private String name;
public User(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
@Override
public int compareTo(User o) {
return pareToIgnoreCase(o.getId());
}
}
public class ComparatorTest {
public static void main(String[] args) {
List list = new ArrayList<>();
User user1 = new User("222", "张三");
User user2 = new User("333", "李四");
User user3 = new User("111", "王五");
list.add(user1);
list.add(user2);
list.add(user3);
System.out.println("排序前:");
for (User user : list) {
System.out.println(user.toString());
}
System.out.println("排序后:");
// 进行集合排序
Collections.sort(list);
for (User user : list) {
System.out.println(user.toString());
}
}
}
排序前:
User{id='222', name='张三'}
User{id='333', name='李四'}
User{id='111', name='王五'}
排序后:
User{id='111', name='王五'}
User{id='222', name='张三'}
User{id='333', name='李四'}