开发者社区 问答 正文

将Java数组转换为可迭代

我有一个原始数组,例如int,int [] foo。它可能是小型的,也可能不是。

int foo[] = {1,2,3,4,5,6,7,8,9,0}; 从中创建一个的最佳方法是Iterable 什么?

Iterable fooBar = convert(foo); 笔记:

请不要回答使用循环(除非您可以对编译器如何对它们做一些聪明的事情给出很好的解释?)

另请注意

int a[] = {1,2,3}; List l = Arrays.asList(a); 甚至不会编译

Type mismatch: cannot convert from List<int[]> to List 还要检查 为什么数组不能分配给Iterable? 在回答之前。

另外,如果您使用某些库(例如Guava),请解释为什么这是最好的。(因为来自Google的答案不是完整的:P)

最后,由于似乎有作业,因此请避免发布作业代码。

展开
收起
保持可爱mmm 2020-02-06 23:49:49 521 分享 版权
1 条回答
写回答
取消 提交回答
  • Integer foo[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };

    List list = Arrays.asList(foo); // or Iterable iterable = Arrays.asList(foo); 虽然您需要使用一个Integer数组(而不是一个int数组)才能工作。

    对于基元,可以使用番石榴:

    Iterable fooBar = Ints.asList(foo); com.google.guava guava 15.0 jar 对于Java8 :(根据Jin Kwon的回答)

    final int[] arr = {1, 2, 3}; final PrimitiveIterator.OfInt i1 = Arrays.stream(arr).iterator(); final PrimitiveIterator.OfInt i2 = IntStream.of(arr).iterator(); final Iterator i3 = IntStream.of(arr).boxed().iterator();

    问题来源于stack overflow

    2020-02-06 23:50:18
    赞同 展开评论