我有一个对象的数组列表,比如arrlist =[obj1, obj2,obj3]
,其中每个对象包含epochs
和一个整数,也就是obj_i = {"1493275005401", 2} for all i
。我想根据时间点对数组列表排序。作为一个java初学者,我不知道怎么做。
注:我在谷歌上搜索了一下,找到了Collections.sort()
,但我不知道如何告诉sort在对象的特定字段上排序。
任何帮助都很感激。
编辑:如果我把epoch
(TIME)看作string
而不是time.
,那么排序后的输出会改变吗?
4条答案
按热度按时间ccgok5k51#
您可以将
Collections.sort
与比较器一起使用,假设您有以下代码:如果要使用第一个项目(字符串)进行排序,可以使用:
如果要使用第二个项目(即和int)进行排序,可以使用:
注意:您也可以对多个项目的列表进行排序。
因为epoch是一个整数,你可以把它转换成BigInteger并比较你的日期:
wvt8vs2t2#
你可以使用
Collections.sort(List<T>, Comparator<T>)
来完成这个任务,你只需要指定一个Comparator
来使用你的数据类型的epoch
组件。让我们假设你的类型看起来像这样(epoch看起来像一个String):
然后,您可以创建一个比较器,用于比较epoch String的数字(!)值:
并像这样使用它:
uttx8gqw3#
尝试比较器:
这是Java 8引入的较新语法和比较器API。
comparing
方法将函数作为参数,该参数将从列表中的元素提取相关属性。如果您阅读了Comparator的
comparing
方法的JavaDoc,您将找到有关如何进一步修改排序的更多信息。为了更好地了解正在发生的事情:
kse8i1jr4#
对于按历元时间排序,我们可以这样做
anyList.sort(Comparator.comparing(o.getEpoch()))