在Groovy中将两个列表的内容交替合并到一个列表中

泰耶布尔

我想将两个列表的内容交替合并到一个新列表中。列表的长度是不确定的。我正在使用下面的代码来实现这一目标。我想知道,是否有任何不使用所有条件和循环的方法来实现这一目标。目的是使用常规功能尽可能缩短代码。

def combineList(ArrayList list1, ArrayList list2){
    def list = [];
    int j = k = 0;
    def size = (list1.size() + list2.size());
    for (int i = 0; i < size; i++) {
        if(j < list1.size())
            list.add(list1.get(j++));
        if(k < list2.size())
            list.add(list2.get(k++));
    }
    println list;
}

输入:

情况1:

combineList([1,2,3,4,5,6,7,8,9,0], ['a','b','c','d','e','f'])

情况2:

combineList([1,2,3,4], ['a','b','c','d','e','f'])

输出:

情况1:

[1, a, 2, b, 3, c, 4, d, 5, e, 6, f, 7, 8, 9, 0]

情况2:

[1, a, 2, b, 3, c, 4, d, e, f]
玛哈帕特罗

多种方式之一:

List combineList(List one, List two) {
    def result = [one, two].transpose()
    ( result += (one - result*.get(0)) ?: (two - result*.get(1)) ).flatten()
}

assert combineList([1,2,3,4], ['a','b','c','d','e','f']) == [1, 'a', 2, 'b', 3, 'c', 4, 'd', 'e', 'f']
assert combineList([1,2,3,4,5,6,7,8,9,0], ['a','b','c','d','e','f']) == [1, 'a', 2, 'b', 3, 'c', 4, 'd', 5, 'e', 6, 'f', 7, 8, 9, 0]
assert combineList([1,2,3,4], ['a','b','c','d']) == [1, 'a', 2, 'b', 3, 'c', 4, 'd']

解释:

  • 转置列表会产生类似的列表[[1, a], [2, b], [3, c]]
  • 接下来检查列表中的任何一个是否剩余任何剩余元素。
    • 这是通过检查是否对任何元素进行减号运算来完成的。从结果列表中获取所有第一个元素以检查第一个列表参数,类似地,从结果列表中获取第二个元素以检查作为参数传递给方法的第二个列表。
  • 如果存在,则将它们添加到结果中
  • 最后,将结果展平

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将两个列表合并到一个交替元素中

在Python中将两个列表合并到另一个列表

foreach:如何在多个迭代中将两个矩阵合并到一个列表中?

将R中的两个列表合并到一个数据框中

将两个并行任务的结果合并到一个列表中

R将两个列表合并为一个,从每个列表中交替绘制元素

将两个时间序列对象(ts)列表合并到一个新的列表中

将两个不同大小的元组列表合并到一个字典列表中

Java。如何将两个最初排序的队列合并到一个队列中?(没有链接列表或其他内容)

如何将两个列表与键值合并到一个关联数组中

如何将两个列表合并到一个拼合中不起作用

Python 将来自两个不同文件的行合并到一个列表中

如何按日期将两个对象列表合并到一个新对象中

将两个文件的内容合并到bash中的一个文件中

将两个分区的内容合并到一个单独的分区中

在颤振飞镖中将列表合并到一个列表中

将两个列表合并到字典中

在Java中将两个列表合并为一个“二维”列表

将两个列表合并到字典中,一个包含重复元素,一个包含整数

如何将具有唯一字段的两个不同对象列表合并到一个单独的列表中?

整理或交替将两列合并为 R 中的一个列表

如何将两个列表统一合并到字典中

将两个等长列表合并到字典中,一对多映射

使用Java 8根据特定值将两个pojo列表合并到另一个pojo列表中

在Python中将多个变量结果合并到一个列表中

如何在熊猫中将多列合并到一个变量(列表)中

在C#.NET中将两个(或多个)列表合并为一个

在Python中将两个列表元素合并为一个?

将熊猫数据框中的两列合并到一个列表中