草庐IT

Iterable

全部标签

java - 如何制作一个使用两种不同泛型类型扩展 Iterable 的 Java 接口(interface)?

理想情况下,它看起来像这样(上下文无关紧要):publicinterfacemyInterfaceextendsIterable,Iterable{...}但这在Java中是不允许的。我怎样才能实现这种行为? 最佳答案 很遗憾您不能。在Java中,您不能有两种具有以下签名的方法:Iteratoriterator();Iteratoriterator();在一个类或接口(interface)中。 关于java-如何制作一个使用两种不同泛型类型扩展Iterable的Java接口(interf

java - 使用 Guava 将 Iterable 转换为数组

我需要返回String大批。我使用Guava来拆分String.请看下面的代码IterablearrayOfValues=Splitter.on(";").split(myString);它返回一个Iterable.但我需要一个String[].有没有办法给Iterator并将其转换为Array[].非常感谢 最佳答案 使用Iterables.toArray(Iterableiterable,Classtype)Guava中的方法。 关于java-使用Guava将Iterable转换为数

java - 使用 Guava 将 Iterable 转换为数组

我需要返回String大批。我使用Guava来拆分String.请看下面的代码IterablearrayOfValues=Splitter.on(";").split(myString);它返回一个Iterable.但我需要一个String[].有没有办法给Iterator并将其转换为Array[].非常感谢 最佳答案 使用Iterables.toArray(Iterableiterable,Classtype)Guava中的方法。 关于java-使用Guava将Iterable转换为数

java - 将 Iterable<T> 转换为 T[] 的可重用方法?

我正在尝试编写一个通用方法以数组形式返回Iterable的内容。这是我所拥有的:publicclassIterableHelp{publicT[]toArray(Iterableelements){ArrayListarrayElements=newArrayList();for(Telement:elements){arrayElements.add(element);}return(T[])arrayElements.toArray();}}但我收到编译器警告“注意:...\IterableHelp.java使用未经检查或不安全的操作。”对可以避免此类警告的另一种方法有什么想法吗?

java - 将 Iterable<T> 转换为 T[] 的可重用方法?

我正在尝试编写一个通用方法以数组形式返回Iterable的内容。这是我所拥有的:publicclassIterableHelp{publicT[]toArray(Iterableelements){ArrayListarrayElements=newArrayList();for(Telement:elements){arrayElements.add(element);}return(T[])arrayElements.toArray();}}但我收到编译器警告“注意:...\IterableHelp.java使用未经检查或不安全的操作。”对可以避免此类警告的另一种方法有什么想法吗?

java - 在 Java 中,为什么我不能使用 lambda 作为增强的 for 循环表达式?

假设我们有一个Iteratoriterator.因为Iterable是一个函数式接口(interface),我们可以这样写:Iterableiterable=()->iterator;我们当然可以使用iterable作为for循环的增强表达式:for(Integeri:iterable)foo(i);那是为什么for(Integeri:()->iterator)foo(i);不允许?(它会导致以下编译器错误:)error:lambdaexpressionnotexpectedherefor(Integeri:()->iterator)foo(i);^明确目标类型for(Integeri

java - 在 Java 中,为什么我不能使用 lambda 作为增强的 for 循环表达式?

假设我们有一个Iteratoriterator.因为Iterable是一个函数式接口(interface),我们可以这样写:Iterableiterable=()->iterator;我们当然可以使用iterable作为for循环的增强表达式:for(Integeri:iterable)foo(i);那是为什么for(Integeri:()->iterator)foo(i);不允许?(它会导致以下编译器错误:)error:lambdaexpressionnotexpectedherefor(Integeri:()->iterator)foo(i);^明确目标类型for(Integeri

java - 如何在 Iterable 上执行 Stream 函数?

这个问题在这里已经有了答案:WhydoesIterablenotprovidestream()andparallelStream()methods?(3个回答)关闭8年前。在Java8中,Stream类没有任何方法来包装Iterable。相反,我从Iterable获取Spliterator,然后像这样从StreamSupport获取Stream:booleanparallel=true;StreamSupport.stream(spliterator(),parallel).filter(Row::isEmpty).collect(Collectors.toList()).forEac

java - 如何在 Iterable 上执行 Stream 函数?

这个问题在这里已经有了答案:WhydoesIterablenotprovidestream()andparallelStream()methods?(3个回答)关闭8年前。在Java8中,Stream类没有任何方法来包装Iterable。相反,我从Iterable获取Spliterator,然后像这样从StreamSupport获取Stream:booleanparallel=true;StreamSupport.stream(spliterator(),parallel).filter(Row::isEmpty).collect(Collectors.toList()).forEac

java - 为什么没有 getFirst(iterable) 方法?

Iterables为getLast提供两种方法publicstaticTgetLast(Iterableiterable);publicstaticTgetLast(Iterableiterable,@NullableTdefaultValue);但只有一个用于getFirstpublicstaticTgetFirst(Iterableiterable,@NullableTdefaultValue);是否有任何破坏对称性的设计/实现原因? 最佳答案 我认为重点是没有理由使用getFirst(iterable),因为这可以通过iter