java - 如何创建合并其他两个列表的列表?

标签 java

我是Java的新手,正在慢慢学习,所以不确定是否有明显的方法可以做到这一点,但是我基本上有两个要合并在一起以形成一个列表的列表。

为此,Python代码使用了一个称为zip的函数。假设我有list1 = 1,2,3,4,5list2= 6,7,8,9,10。然后,我想用new_list = (1,6), (2,7), (3,8), (4,9), (5,10)之类的东西创建一个新列表。

我发现有一个类似问题的question,但是我不想使用外部库,而是想自己学习如何创建此函数。

最佳答案

通用算法如下所示(假设您要获取N个输入列表):

public <T> List<List<T>> zip(List<T> ... lists) {

    if(lists.isEmpty()) {
        return Collections.<List<T>>emptyList();
    }

    // validate that the input lists are all the same size.
    int numItems = lists[0].size();
    for(int i = 1; i < lists.length; i++) {
        if(lists[i].size() != numItems) {
            throw new IllegalArgumentException("non-uniform-length list at index " + i);
        }
    } 

    List<List<T>> result = new ArrayList<List<T>>();

    for(int i = 0; i < numItems; i++) {

        // create a tuple of the i-th entries of each list
        List<T> tuple = new ArrayList<T>(lists.length);
        for(List<T> list : lists) {
            tuple.add(list.get(i));
        }

        // add the tuple to the result
        result.add(tuple);
    }

    return result;
}

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

相关文章:

java - 运行 Scala jar 文件时出现 NoClassDefFoundError

java - Android(Java)代码中的正则表达式疑问

java - Java String到短哈希码

java - 局部变量在类的方法中成为最终的——但为什么呢?

java - 如何将信息从Override的ActionListener方法发送到Java中的main方法?

java - SwingWorker:何时调用 done 方法?

Java - 实现忙等待机制

java - 根据arraylist d对arraylist a,b,c进行排序

java - 处理海量数据时如何使用BufferedReader

java - 如何在BorderLayout中更改Jpanels的宽度大小?