java list根据另一个list排序
时间: 2023-07-21 13:14:57 浏览: 44
可以使用Java 8的Stream API和Lambda表达式来根据另一个List对List进行排序。
假设我们有两个List:一个是要排序的List(例如List<String>),另一个是排序依据的List(例如List<Integer>)。我们可以使用以下代码来根据排序依据的List对要排序的List进行排序:
```
List<String> listToSort = Arrays.asList("apple", "banana", "pear", "orange");
List<Integer> sortOrder = Arrays.asList(3, 1, 4, 2);
List<String> sortedList = IntStream.range(0, listToSort.size())
.boxed()
.sorted(Comparator.comparing(sortOrder::get))
.map(listToSort::get)
.collect(Collectors.toList());
System.out.println(sortedList); // 输出 [banana, orange, apple, pear]
```
在上面的代码中,我们使用`IntStream.range(0, listToSort.size())`创建一个表示索引的IntStream,然后使用`boxed()`方法将其转换为Stream<Integer>。接着,我们使用`sorted(Comparator.comparing(sortOrder::get))`对Stream进行排序,其中`sortOrder::get`是一个方法引用,它将返回索引对应的排序依据值。最后,我们使用`map(listToSort::get)`将排序后的索引映射为要排序的List中的元素,并使用`collect(Collectors.toList())`将结果收集到一个新的List中。
这样,我们就可以根据另一个List对List进行排序了。