我有一堂课
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] 删除。
我来说两句