java8 排序 一个list<string> 根据另一个list<string>排序
时间: 2024-05-28 12:05:45 浏览: 107
在Java 8中,可以使用`Comparator`接口和`Stream`来对一个`List<String>`根据另一个`List<String>`进行排序。下面是一个示例代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("apple", "banana", "orange");
List<String> list2 = Arrays.asList("banana", "orange", "apple");
List<String> sortedList = sortList(list1, list2);
System.out.println(sortedList);
}
public static List<String> sortList(List<String> list1, List<String> list2) {
Map<String, Integer> indexMap = new HashMap<>();
for (int i = 0; i < list2.size(); i++) {
indexMap.put(list2.get(i), i);
}
Collections.sort(list1, Comparator.comparingInt(s -> indexMap.getOrDefault(s, Integer.MAX_VALUE)));
return list1;
}
}
```
在上面的代码中,我们首先创建了两个列表`list1`和`list2`,分别表示要排序的列表和排序依据的列表。然后,我们定义了一个`sortList`方法来对`list1`进行排序。在该方法中,我们创建了一个`HashMap`来存储`list2`中每个元素的索引位置。然后,我们使用`Collections.sort`方法和自定义的比较器来对`list1`进行排序,比较器根据`indexMap`中存储的索引位置进行比较。最后,返回排序后的列表。
运行上述代码,输出结果为:`[banana, orange, apple]`,表示根据`list2`对`list1`进行排序后的结果。
阅读全文