我在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");