当前位置: 首页 > 面试题库 >

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

司徒光霁
2023-03-14
问题内容

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

我考虑过一些配对类型,但是Java中不存在。人们经常说这是因为专门的Pair-class比一般的Pair-
class好(请参阅此问题)。但是,这在一般zip功能中是不可能的。


问题答案:

由于您似乎决定不理会具有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]]


 类似资料:
  • 问题内容: 例如,我要创建一个可以返回任何数字(负数,零或正数)的函数。 但是,基于某些异常,我希望函数返回 有没有一种方法可以编写可以返回 或 的函数? 好的,因此收到了很多答复。我知道我只是在错误地解决问题,因此我应该在方法中使用某种异常。为了获得更好的答案,我将提供一些示例代码。请别取笑:) 问题答案: 不,您不能在Java中做到这一点。 您可以返回一个。通过返回一个对象,您可以从技术上返回

  • 我在玩TypeScript中的条件类型。我想用条件返回类型编写一个函数。如果函数被传递一个字符串,它将返回一个名称,否则它将返回一个Id。 我在返回语句中得到以下错误: 我错过了什么?Thnx! 编辑:直接摘自Anders Hejlsberg在Build 2018上的演讲:https://youtu.be/hDACN-BGvI8?t=2241 他甚至说“我们不再需要写函数重载了…” 如果我将代码更

  • 我看过返回IList vs ICollection vs Collection以及它链接的其他问题,但我仍然对这个问题感到困惑。 出于演示目的,我们假设我有一个类,在其中公开了一个公共方法,如下所示: 要遵循CA1002,我的方法应该返回实际的集合类(、等)或它们的接口(、等),如果我希望返回具体?

  • 问题内容: 中引入的type对许多开发人员来说都是新事物。 用方法返回类型代替经典方法是一种好习惯吗?假设值可以是。 问题答案: 当然,人们会做他们想要的。但是添加此功能时我们确实有明确的意图,并且它并不是通用的Maybe类型,因为许多人希望我们这样做。我们的意图是为库方法返回类型提供一种有限的机制,其中需要一种明确的方法来表示“无结果”,并且使用这种方法极有可能导致错误。 例如,你可能永远不要将

  • 问题内容: 在Python中,我想编写一个返回另一个函数的函数。返回的函数应该可以通过参数调用,并返回高度和半径为圆柱的体积。 我知道如何从Python中的函数返回 值 ,但是如何返回 另一个函数 ? 问题答案: 使用Python尝试一下: 这样使用它,例如与和: 注意,返回一个函数很简单,只需在函数内部定义一个新函数,然后在最后返回它- 小心地为每个函数传递适当的参数。仅供参考,从另一个函数返回

  • 问题内容: Java中的协变返回类型是什么?在一般的面向对象编程中? 问题答案: 协变返回,意味着当一个方法被覆盖时,覆盖方法的返回类型被允许为覆盖方法的返回类型的子类型。 为了举例说明,通常情况是-声明为返回类型。你可以在自己的类中重写此方法,如下所示: 这样做的好处是,任何持有对MyFoo对象的显式引用的方法都将能够调用clone()并知道(无需强制转换)返回值是的实例。如果没有协变量返回类型