【Java 基础】Java对List中对象排序

做了Android开发这么久,做过很多次比较两个List<Object>是否相等,或者给List<Object>中元素排序的需求,这里简单总结下,作为“java基础”的第一篇blog。

一、给List<Object>中元素排序

其实给List<Object>中元素排序非常简单,一行代码就可以搞定

Collections.sort(list);

 

但是调用这一行代码之前,需要给一个排序规则。怎么给呢?

在list元素的类里实现comparable接口,并且完成compareTo方法。

 

    @Override
    public int compareTo(Advertisement o) {
        return getSortOrder() - o.getSortOrder();
    }


例如这个简单的实现。什么意思呢?这段代码的意思就是,比较两个对象,其实就是比较它们的SortOrder字段,谁的这个字段的值越大,这个对象就排在前面。

 

 

二、Comparable原理(待补充)

 

三、比较两个List<Object>是否相等(待补充)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Comparator接口来对List对象的属性进行排序,具体步骤如下: 1. 定义一个实现了Comparator接口的类,重写compare方法,在方法比较两个对象的属性值,返回一个int值,表示比较结果。 例如,对一个Person类的年龄进行排序,可以定义一个AgeComparator类: ``` public class AgeComparator implements Comparator<Person> { @Override public int compare(Person p1, Person p2) { return p1.getAge() - p2.getAge(); } } ``` 2. 在需要排序的代码,调用Collections.sort方法,并将Comparator对象作为参数传入。 例如,对一个List<Person> list进行年龄排序,可以这样写: ``` Collections.sort(list, new AgeComparator()); ``` 完整示例代码: ``` import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Main { public static void main(String[] args) { List<Person> list = new ArrayList<>(); list.add(new Person("Tom", 20)); list.add(new Person("Jerry", 18)); list.add(new Person("Mike", 25)); list.add(new Person("Alice", 22)); Collections.sort(list, new AgeComparator()); for (Person p : list) { System.out.println(p.getName() + " " + p.getAge()); } } static class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } static class AgeComparator implements Comparator<Person> { @Override public int compare(Person p1, Person p2) { return p1.getAge() - p2.getAge(); } } } ``` 输出结果: ``` Jerry 18 Tom 20 Alice 22 Mike 25 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值