我在Java中有两个ArrayList。这两个列表均未排序。

    ArrayList<Integer> listOne = new ArrayList<>();
    listOne.add(2);
    listOne.add(1);
    listOne.add(4);
    listOne.add(8);
    listOne.add(6);

    ArrayList<String> listTwo = new ArrayList<>();
    listTwo.add("ant");
    listTwo.add("bear");
    listTwo.add("cat");
    listTwo.add("dog");
    listTwo.add("zebra");

我想按自然顺序对listOne进行排序,并且listTwo的每个项目都应根据listOne中的位置进行排序:

到目前为止,我有:
  Collections.sort(listOne);

  for (int i = 0; i < listOne.size(); i++) {

        int intTest = listOne.get(i);
        String stringTest = listTwo.get(i);

        System.out.println(intTest);
        System.out.println(stringTest);

    }

打印:
  1 ant, 2 bear, 4 cat , 6 dog , 8 zebra

我预期的打印输出是:
  1 bear, 2 ant, 4 cat, 6 zebra, 8 dog

因此,当listOne的项目“1”将位置从第2更改为第1时,listTwo中的项目“bear”在第2位置也应在第1位置打印。

什么是最简单有效的方法?

最佳答案

TreeMap最适合这种情况。它按排序顺序插入数据,因此基本上可以存储密钥,并且可以针对每个密钥存储动物。

Map<Integer,String> sortedMap = new TreeMap<Integer,String>();
sortedMap.push(listOne.get(i),listTwo.get(listOne.get(i)));

如果要坚持使用ArrayList,则可以遍历listOne并将其推入HashMap<Integer,String>
iterate over list (for example i)
map.put( listOne.get(i), secondList.get(i));

所以hashMap就像(2, "ant");
  • Collections.sort(listOne);
  • 针对每个条目,您都可以从地图
  • 中获取相应的动物

    07-24 22:12