java arraylist comparable_Java 两种ArrayList集合自定义对象属性排序,Comparator接口 或 Comparable接口...

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 id1.compareToIgnoreCase(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 this.id.compareToIgnoreCase(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='李四'}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值