Java:如何编写“zip”函数?应该是什么返回类型?

2022-09-04 21:33:28

函数的返回类型应该是什么?(与大多数其他语言一样,例如,阅读此处zipzip)

我想过一些配对类型,但这在Java中并不存在。它经常说这是因为专门的对类比一般的类更好(请参阅此问题)。但是,这在一般函数中是不可能的。zip


答案 1

由于您似乎决心忽略具有多年Java经验的人,因此这里的代码与python中的zip函数相同。

public static <T> List<List<T>> zip(List<T>... lists) {
    List<List<T>> zipped = new ArrayList<List<T>>();
    for (List<T> list : lists) {
        for (int i = 0, listSize = list.size(); i < listSize; i++) {
            List<T> list2;
            if (i >= zipped.size())
                zipped.add(list2 = new ArrayList<T>());
            else
                list2 = zipped.get(i);
            list2.add(list.get(i));
        }
    }
    return zipped;
}

public static void main(String[] args) {
        List<Integer> x = Arrays.asList(1, 2, 3);
        List<Integer> y = Arrays.asList(4, 5, 6);
        List<List<Integer>> zipped = zip(x, y);
        System.out.println(zipped);
}

指纹

[[1, 4], [2, 5], [3, 6]]

答案 2

不,标准 JRE 中没有显式的对(或任何元组)。

在javaposse Google小组上有一个关于这个主题的讨论,你可能感兴趣,链接到Dick Wall关于为什么Java需要一对和三重的帖子,以及一个类似的问题在这里问


更新 - 最初的问题是Java中是否有一对。这个答案可能不再有意义。


推荐