gpt4 book ai didi

java - 对两个 ArrayList 中的元素进行排序和交换 (Java)

转载 作者:行者123 更新时间:2023-12-02 06:40:05 26 4
gpt4 key购买 nike

我是 Java 新手...

我有两个 ArrayList:

subList1
subList2

它们已由另一种方法填充,运行时,列表包含以下字符串:

subList1: [amulet, map, stone, sword]
subList2: [bottle, shield, wand]

我需要做的是对两个列表进行排序,以便 subList1 包含按字母顺序位置小于 subList2 中的元素的所有元素。此外,两个列表大小必须保持相同。

预期输出:

subList1: [amulet, bottle, map, shield]
subList2: [stone, sword, wand]

到目前为止我的代码:

Collections.sort(subList1);
Collections.sort(subList2);

//[amulet, map, stone, sword]
//[bottle, shield, wand]

for (int i1 = 0; i1 < subList1.size(); i1++) {

for (int i2 = 0; i2 < subList2.size(); i2++) {

if (subList1.get(i1).compareTo(subList2.get(i1)) < 0) {

// first run: element 0: subList1 = amulet, subList2 = bottle

String temp = subList1.get(i1);
subList1.set(i1, subList2.get(i1));
subList2.set(i1, subList1.get(i1));

我还收到以下行的 IndexOutOfBoundsException:

if (subList1.get(i1).compareTo(subList2.get(i1)) < 0)

非常感谢任何帮助。谢谢。

最佳答案

通过分别对两个列表进行排序,然后迭代它们,您的任务变得更加复杂。我建议您遵循以下方法:

  • 合并两个列表以创建一个newList = subList1 + subList2
  • newList进行排序
  • newList 末尾获取等于 subList2 长度的子列表。
  • newList 开头获取与 subList1 长度相等的子列表

工作代码:

Collection<String> subList1 = Arrays.asList("amulet", "map", "stone", "sword");
Collection<String> subList2 = Arrays.asList("bottle", "shield", "wand");

// Merge two collection in a single list
List<String> mergedList = new ArrayList<>(subList1);
mergedList.addAll(subList2);

Collections.sort(mergedList);

// Assign subList from mergedList back to original Collection reference
subList1 = mergedList.subList(0, subList1.size());
subList2 = mergedList.subList(subList1.size(), mergedList.size());

System.out.println(subList1); // [amulet, bottle, map, shield]
System.out.println(subList2); // [stone, sword, wand]

关于java - 对两个 ArrayList 中的元素进行排序和交换 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19227399/

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