java - 使用循环算法从多个列表中选择数据的有效方法

标签 java list multidimensional-array round-robin

我需要从多个列表中创建一个包含所有其他列表值的结果列表,方法是使用循环算法选择数据。

list1 = val1_1,val1_2 .. 
list2 = val2_1,val2_2 .. 
list3 = val3_1,val3_2 ..
//rr choosing
result = val1_1,val2_1,val3_1,val1_2,val2_2,val3_2,val1_3...

每个列表中值的数量可能不同。我该怎么做?

最佳答案

您可以使用从各个列表派生的迭代器队列。从队列中获取下一个迭代器,从迭代器中获取下一个元素,如果不为空,则将其添加回队列。

List<String> lst1 = new ArrayList<>(Arrays.asList("a", "b", "c"));
List<String> lst2 = new ArrayList<>(Arrays.asList("A", "B"));
List<String> lst3 = new ArrayList<>(Arrays.asList("1", "2", "3", "4"));

Queue<Iterator<String>> iters = new LinkedList<>(Stream.of(lst1, lst2, lst3)
        .map(List::iterator).collect(Collectors.toList()));

List<String> result = new LinkedList<>();
while (! iters.isEmpty()) {
    Iterator<String> iter = iters.poll();
    if (iter.hasNext()) {
        result.add(iter.next());
        iters.add(iter);
    }
}
System.out.println(result); // [a, A, 1, b, B, 2, c, 3, 4]

关于java - 使用循环算法从多个列表中选择数据的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43627114/

相关文章:

python - 有什么方法可以像字典一样从列表中的元组中获取值吗?

list - OCaml 模式匹配任意多个列表元素

java - Java Swing 中 MouseMotionListener 的适当方法是什么?

java - Spring - java.io.FileNotFoundException : class path resource cannot be opened because it does not exist

java swing绘制方法富矿

c++ - 如何将二维数组值与用户输入进行比较?

多维数组中的PHP匹配值

java - 无法删除 jackrabbit 中的节点

python - (Python) 确定 (x, y) 坐标是否共线的脚本 - 出现一些错误

c++ - 显示二维数组图像的最佳 C++ 库