gpt4 book ai didi

java - 在Java中对多个相对列表进行排序

转载 作者:行者123 更新时间:2023-12-01 09:47:06 28 4
gpt4 key购买 nike

我见过其他类似的问题 - 但人们无法很好地理解这些问题以提供良好的解决方案 - 所以我会尽力做得更好......

我有两个列表,一个用于事件名称,一个用于事件时间

List<String> eventNames= new ArrayList<String>();
List<Calendar> eventTimes= new ArrayList<Calendar>();

这些列表之间存在 1 对 1 的关系,因此 eventNames 中的第一项与 eventTimes 的第一项相关...第二项、第三项...等也相同。

我可以使用以下命令按升序对 eventTimes 进行排序:

Collections.sort(eventTimes, new Comparator<Calendar>() {
public int compare(Calendar c1, Calendar c2) {
return c1.getTime().compareTo(c2.getTime());
}
});

但我想按 eventTimes 中事件的时间对这两个列表进行排序。

我相信我需要“映射”这些列表...?但我不明白该怎么做?

最佳答案

如果您不想创建新实体 class只是为了对它们进行排序,然后您可以创建一个表示索引的整数列表并对其进行排序,而不是使用具有 Calendar 列表的比较器.

public static void main(String[] args) {
final List<String> eventNames= new ArrayList<String>();
final List<Calendar> eventTimes= new ArrayList<Calendar>();
ArrayList<Integer> indices = range(eventNames.size());
Collections.sort(indices, new Comparator<Integer>() {
@Override
public int compare(Integer i, Integer j) {
return eventTimes.get(i).compareTo(eventTimes.get(j));
}
});

//Now to get the index i = 5 after sort you must do this
eventNames.get(indices.get(5));
}

private static ArrayList<Integer> range(int size) {
return range(0, size);
}

public static ArrayList<Integer> range(int start, int end) {
ArrayList<Integer> list = Lists.newArrayList();
for (int i = start; i < end; i++) {
list.add(i);
}
return list;
}

PS:我并不为上面的代码感到自豪。为了有意义,要么将此代码包装在一个类中,要么创建一个类似的实体类。

关于java - 在Java中对多个相对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899659/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com