java list根据另一个list排序
时间: 2023-07-21 09:25:45 浏览: 41
可以使用Java 8的Stream API和Comparator来实现这个功能。
假设有两个List,一个是存储排序后结果的List,一个是原始的List:
```java
List<String> originalList = Arrays.asList("apple", "banana", "orange", "pear");
List<String> sortedList = new ArrayList<>();
List<String> sortByList = Arrays.asList("pear", "banana", "orange", "apple");
```
现在需要将原始List按照sortByList的元素顺序进行排序后,存储到sortedList中。代码如下:
```java
sortedList = sortByList.stream()
.filter(originalList::contains)
.collect(Collectors.toList());
```
这段代码的思路是,使用Stream API对sortByList进行遍历,过滤掉原始List中没有的元素,然后将剩下的元素按照在sortByList中的顺序收集到sortedList中。
最终sortedList中的元素顺序将是:pear, banana, orange, apple。
相关问题
java list 根据另一个list优先级排序
你可以使用Java的Collections.sort()方法来根据另一个List的优先级对List进行排序。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ListPrioritySortExample {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("A");
list1.add("B");
list1.add("C");
List<String> list2 = new ArrayList<>();
list2.add("C");
list2.add("A");
list2.add("B");
// 使用Comparator根据list2的优先级对list1进行排序
Collections.sort(list1, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int index1 = list2.indexOf(o1);
int index2 = list2.indexOf(o2);
return Integer.compare(index1, index2);
}
});
System.out.println("排序后的list1:" + list1);
}
}
```
在上面的示例中,我们有两个List:list1和list2。我们使用Comparator接口的compare方法来比较list1中的元素在list2中的索引位置,并根据索引位置的优先级进行排序。最后,我们打印出排序后的list1。
运行上述代码,输出将是:
```
排序后的list1:[C, A, B]
```
这样,list1就按照list2的优先级进行了排序。你可以根据自己的需求修改比较逻辑和数据类型。希望能对你有所帮助!
java stream实现 list根据另一个list排序
使用Java 8中的Stream API,同样可以实现根据另一个List排序的功能。可以使用Stream的sorted()方法结合Comparator自定义排序规则来实现:
```java
List<String> sortList = new ArrayList<>();
sortList.add("apple");
sortList.add("banana");
sortList.add("orange");
sortList.add("pear");
List<String> referenceList = new ArrayList<>();
referenceList.add("pear");
referenceList.add("apple");
referenceList.add("banana");
referenceList.add("orange");
List<String> sortedList = sortList.stream()
.sorted(Comparator.comparingInt(referenceList::indexOf))
.collect(Collectors.toList());
System.out.println(sortedList);
```
上述代码中,使用Stream的sorted()方法对需要排序的List进行排序,其中传入了一个自定义的Comparator对象,该对象的compare()方法中根据排序参照的List中元素的索引来比较需要排序的List中元素的大小关系,最终实现了按照参照List中元素的顺序进行排序的功能。最后通过collect()方法将排序后的元素重新收集到一个List中。