使用索引数组对列表进行排序的最佳方法

时间:2014-11-14 12:30:45

标签: java arrays sorting

我想用一个整数数组作为新索引对字符串列表进行排序:

Integer[] newIndexes = {0,2,1};
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Pear");
fruits.add("Banana");
fruits.sort....

最好的方法是什么?

2 个答案:

答案 0 :(得分:3)

使用Java 8,您可以使用索引流和map()方法来执行此操作:

List<String> sortedFruits = Stream.of(newIndexes).map(fruits::get).collect(Collectors.toList());

给出了列表

[Apple, Banana, Pear]

答案 1 :(得分:0)

您可以使用SortedMap将整数映射到字符串值。这样,它将根据键的自然顺序对字符串值进行排序:

SortedMap<Integer, String> map = new TreeMap<Integer, String>();
for (int i = 0; i < newIndexes.length; i++) {
    map.put(newIndexes[i], fruits.get(i));
}

Collection<String> sortedFruits = map.values();

如果您打算按字母顺序对字符串进行排序,则可以使用Collections#sort()