gpt4 book ai didi

java - 对两个列表进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:30:49 25 4
gpt4 key购买 nike

我在 Java 工作。我有两个列表,我们称它们为 A 和 B,我想对它们进行排序。A 是一个整数列表,所以我没有问题这样做。我只是使用 Collections.sort() 来获得一个排序的整数列表。问题来自列表 B。我想在 A 中进行相同的更改。。 B 是一个对象列表,但无法将 B 中的更改与 A 中的更改相关联。我的意思是,没有条件创建比较器方法

小例子:

我有:

A -> {5,1,3,6,4}
B -> {a,b,c,d,e}

我想对 A 进行排序并对 B 应用相同的更改以获得:

A -> {1,3,4,5,6}
B -> {b,c,e,a,d}

有没有办法使用内置的 Java 函数来做到这一点?出于效率考虑,我宁愿避免自己编写排序算法。谢谢!

最佳答案

TreeMap 将始终以正确的顺序遍历键,因此您可以这样做:

 Map<Integer, String> map = new TreeMap<Integer, String>();
map.put(5, "a");
map.put(1, "b");
map.put(3, "c");
map.put(6, "d");
map.put(4, "e");
System.out.println(map.keySet());
System.out.println(map.values());

但是,如果您真的想以同一对 List 实例开始和结束,我认为您必须做一些像这样令人费解的事情:

 List<Integer> numbers = new ArrayList<Integer>(Arrays.asList(5, 1, 3, 6, 4));
List<String> letters = new ArrayList<String>(Arrays.asList("a", "b", "c", "d", "e"));
Map<Integer, String> map = new HashMap<Integer, String>();
for (int i = 0, n = numbers.size(); i < n; i++) {
map.put(numbers.get(i), letters.get(i));
}
Collections.sort(numbers);
letters.clear();
for (int number : numbers) {
letters.add(map.get(number));
}
System.out.println(numbers);
System.out.println(letters);

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

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