如何合并三个列表:
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/