如何根据另一个列表对ArrayList进行排序

时间:2015-03-21 12:32:44

标签: android

我正在制作出租车预订申请...我在司机方面发送推送通知...我想向已完成最低工作的司机发送推送通知..... 我有两个列表......一个是从数据库获取Jobs列,另一个是从数据库获取ObjectIds,ObjectIds在String中,而Jobs在整数....

我已使用Collections.sort(jobs)按升序排序作业列表(整数);

但现在我想根据作业列表...

对objectIds列表进行排序

例如:

这是排序前的作业列表:

[11,23,1,5,8]

这是我的ObjectIds列表:

[Rx3sh3BWO4,P9m1hnWo7L,71K6AkJOo3,yjLhP0zKKG,5UffHYiwlk]

当我对作业列表进行排序

[1,5,8,11,23]

但现在我希望与ObjectIds列表的0索引中的1相关的Object ID ...

如何对List ObjectIds进行排序,比较作业列表????

2 个答案:

答案 0 :(得分:0)

使用HashMap并将密钥添加为您的ObjectID,将值添加为jobId(反之亦然,根据您的要求)

如果你想排序,那么你也可以使用ArrayList

答案 1 :(得分:0)

您可以使用地图而不是列表吗? e.g。

Map<Integer, String>

你可以这样说

map.get(11)

将返回String&#39; Rx3sh3BWO4&#39;

对于排序,您可以使用SortedMap,它将按照您定义的方式保持自己排序,或者您可以使用Map.keySet()获取一组键并将其复制到List(或SortedSet),然后您可以对其进行排序在迭代之前。

请注意,一般情况下,Maps不保证保持其顺序 - LinkedHashMap保持您插入的顺序,并且SortedMap会将其键重新排序为您定义的顺序。

或者,保留两个列表,您可以创建自己的(丑陋的)排序方法,在排序之前复制作业列表,然后为ObjectIds创建一个新列表并迭代新排序的作业列表查找克隆中每个ObjectId的索引,并将ObjectId添加到新列表中。但这不是很漂亮,我会选择地图。