java - 如何合并几个列表?

标签 java collections merge

如何合并三个列表:

  List<String> one = Arrays.asList("one","four","seven");
    List<String> two = Arrays.asList("two","five","eight");
    List<String> three = Arrays.asList("three","six");

    List<List<String>> merged = ...;

要得到这样的结果:

List {one, two, three, four, five , six , seven, eight}

在实际情况中,我需要从参与者列表(组)中获取一些匹配队列。在第一场比赛中,所有来自不同小组的第一名参赛者。在第二场比赛中,所有第二名参赛者进行比赛,依此类推。我将无法解决它。

最佳答案

您可以使用 Java 8 流轻松地将您的列表合并在一起,并将其 flatMap() 合并为 String 的单个 List。按“一”、“二”、“三”等排序将需要自定义排序器,因为简单地按 String.compareTo() 或任何其他自然排序排序将对字符进行词汇比较,而不是它们在英语中的含义。

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Merge {
    public static void main(String[] args) {
        List<String> one = Arrays.asList("one","four","seven");
        List<String> two = Arrays.asList("two","five","eight");
        List<String> three = Arrays.asList("three","six");

        List<List<String>> merged = Arrays.asList(one, two, three);
        System.out.println(merged);
        // Output -> [[one, four, seven], [two, five, eight], [three, six]]

        List<String> flatMapped = merged.stream().flatMap(List::stream).collect(Collectors.toList());
        System.out.println(flatMapped);
        // Output -> [one, four, seven, two, five, eight, three, six]

        flatMapped.sort((o1, o2) -> {
            // TODO - implement sorting logic to return "one", "two", "three", etc.
        });
    }
}

关于java - 如何合并几个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46611021/

相关文章:

java - SpringBoot CrudRepository中如何将原生查询从Service层传递到Repository层

java - 无法将 YouTube 集成到 Fragment

java - 使用现有 ArrayList 的 HashSet 计算出的总数创建新集合

r - 如何在 R 中使用每一侧多个变量进行模糊连接

python - 合并和聚合两个数据帧(具有相同的列,但不是总列数)

MySQL将多个列合并为一个 'temporary'列

java - 查找 k - 最小元素(Java 代码)

java 草稿 AI(多线程)

python - 元组的 SortedCollection,其中 'contains' 仅考虑每个元组的第一部分

java - Java Vector 类的哪些方法是同步的?