gpt4 book ai didi

java - 使用 Stream 按给定的索引序列排序

转载 作者:搜寻专家 更新时间:2023-11-01 09:21:58 25 4
gpt4 key购买 nike

我正在考虑是否可以使用 streams 按索引排序。我所有的搜索总是指向通过将对象值与其他对象值进行比较来进行排序。以下是示例数据和预期结果:

List<Movie> movies = new ArrayList<>();
movies.add(new Movie(1, "Movie1"));
movies.add(new Movie(2, "Movie2"));
movies.add(new Movie(3, "Movie3"));
movies.add(new Movie(4, "Movie4"));

int[] sortIndex = [0, 3, 1, 2];
...Sorting Code...
for (Movie movie : movies) {
Log.d(TAG, movie.getName());
}

预期的答案应该是

Movie1
Movie4
Movie2
Movie3

最佳答案

一个简单的方法是遍历 Array,然后将每个 int 映射到 List 的相应索引,然后将其收集到一个 >列表:

List<Movie> newList = Arrays.stream(sortIndex)
.mapToObj(e -> movies.get(e))
.collect(Collectors.toList());

这将产生 List:

[Movie1, Movie4, Movie2, Movie3]

您可以创建一个方法来执行此操作:

public <T> List<T> sortList(int[] sortOrder, List<T> list) {
return Arrays.stream(sortOrder)
.mapToObj(e -> list.get(e))
.collect(Collectors.toList());
}

关于java - 使用 Stream 按给定的索引序列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54319050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com