如何对对象的数组列表进行排序?

空港

我有一堂课

public class SMS 
{
    public String addr;
    public String body;
    public String type;
    public String timestamp;
}

现在我做了一个对象的arrayList

ArrayList<SMS> temp = new ArrayList<SMS>();

我已经添加了值。现在,我想相对于时间戳对arrayList进行排序。

如何相对于时间戳按升序/降序对arrayList进行排序?

普什莫

要比较包含时间戳记的字符串,您需要先将其解析为long Long.parseLong(timestamp),然后使用来比较数字值Long.compare(x,y)

所以尝试Collections.sort(yorList, yourOwnComparator)

Collections.sort(temp, new Comparator<SMS>() {
    @Override
    public int compare(SMS o1, SMS o2) {
        return Long.compare(Long.parseLong(o1.timestamp), 
                            Long.parseLong(o2.timestamp));
    }
});

如果您可以将时间戳记类型更改long为此代码,则可能看起来像

Collections.sort(temp, new Comparator<SMS>() {
    @Override
    public int compare(SMS o1, SMS o2) {
        return Long.compare(o1.timestamp, o2.timestamp);
    }
});

在Java8中,您甚至可以使用Lambda缩短代码长度

Collections.sort(temp, (SMS o1, SMS o2) -> Long.compare(o1.timestamp, o2.timestamp));

甚至

Collections.sort(temp, (o1,  o2) -> Long.compare(o1.timestamp, o2.timestamp));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章