Java 两个List按照其中一个List元素顺序对另一个List元素进行排序
时间: 2023-08-20 08:05:18 浏览: 272
Java实现对两个List快速去重并排序操作示例
5星 · 资源好评率100%
可以使用Java 8的Stream API来实现,具体步骤如下:
1. 定义两个List,例如list1和list2。
2. 使用list1.stream()创建一个Stream对象。
3. 使用Stream的map方法将list1中的元素映射为一个包含该元素和对应在list2中的索引的Tuple对象。
4. 使用Stream的sorted方法按照list1中元素的顺序对Tuple对象进行排序。
5. 使用Stream的map方法将排序后的Tuple对象中的索引取出来,得到一个排序后的索引列表。
6. 使用Collections的sort方法,根据排序后的索引列表对list2进行排序。
下面是示例代码:
```java
import java.util.*;
import java.util.stream.*;
import javafx.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(3, 1, 4, 1, 5, 9);
List<String> list2 = Arrays.asList("C", "A", "D", "B", "E", "F");
List<Integer> sortedIndexes = list1.stream()
.map(i -> new Pair<>(i, list1.indexOf(i)))
.sorted(Comparator.comparing(Pair::getKey))
.map(Pair::getValue)
.collect(Collectors.toList());
List<String> sortedList2 = new ArrayList<>(list2);
Collections.sort(sortedList2, Comparator.comparing(sortedIndexes::indexOf));
System.out.println(sortedList2); // 输出 [A, B, C, D, E, F]
}
}
```
阅读全文