我正在尝试编写一个通用方法以数组形式返回Iterable的内容。
这是我所拥有的:
public class IterableHelp
{
public <T> T[] toArray(Iterable<T> elements)
{
ArrayList<T> arrayElements = new ArrayList<T>();
for(T element : elements)
{
arrayElements.add(element);
}
return (T[])arrayElements.toArray();
}
}
但是我收到一个编译器警告“注意:… \ IterableHelp.java使用未经检查或不安全的操作。”
对于避免这种警告的其他方法有何想法?
Iterables.toArray
Google Guava中有一种方法。
查看源代码,其定义为:
/**
* Copies an iterable's elements into an array.
*
* @param iterable the iterable to copy
* @param type the type of the elements
* @return a newly-allocated array into which all the elements of the iterable
* have been copied
*/
public static <T> T[] toArray(Iterable<? extends T> iterable, Class<T> type) {
Collection<? extends T> collection = toCollection(iterable);
T[] array = ObjectArrays.newArray(type, collection.size());
return collection.toArray(array);
}
凡ObjectArrays.newArray
最终委托给方法的样子:
/**
* Returns a new array of the given length with the specified component type.
*
* @param type the component type
* @param length the length of the new array
*/
@SuppressWarnings("unchecked")
static <T> T[] newArray(Class<T> type, int length) {
return (T[]) Array.newInstance(type, length);
}
因此,似乎无法@SuppressWarnings
完全避免,但是您可以并且至少应该将其限制在最小范围内。
或者,更好的是,仅使用其他人的实现!
问题内容: 在我的应用程序中,我使用3rd party库(确切地说是MongoDB的Spring数据)。 该库的方法返回,而我的其他代码则期望。 有什么实用方法可以让我快速将一个转换为另一个吗?我想避免foreach在代码中创建这么简单的循环。 问题答案: 在JDK 8+中,不使用任何其他库: 编辑:上面的是Iterator。如果您正在处理Iterable,
我有一个简单的循环,将元素从一个
问题内容: 我有一个返回的接口。 我想使用Java 8 Stream API处理该结果。 但是Iterable不能“流式传输”。 任何想法如何将Iterable用作流而不转换为List? 问题答案: 有一个比直接使用更好的答案,这既简单又得到更好的结果。 Iterable有一个方法,所以你应该使用该方法来获取分离器。在最坏的情况下,它是相同的代码(默认实现使用),但是在更常见的情况下,你已经是一个
我有一个返回的接口。 然而迭代不能“流”。 知道如何使用迭代作为流而不将其转换为列表吗?
本文向大家介绍在Java中将Iterator转换为Iterable,包括了在Java中将Iterator转换为Iterable的使用技巧和注意事项,需要的朋友参考一下 假设以下是具有整数值的迭代器- 现在,将Iterator转换为Iterable- 示例 以下是在Java中将Iterator转换为Iterable的程序- 输出结果
所以我在自定义滑块视图上有这个监听器。当用户滑动滑块时,视图调用“滑块”。当滑块更改时,我正在尝试进行网络调用,但我不想进行一百万次网络调用,因为该方法在滑动时经常被调用。如何使此侦听器回调为可观察量?我知道一旦它是可观察的,我就可以使用去抖动,并且仅在一定的时间间隔后更新。 我试着做了< code>Observable.create(),但是我在一个回调方法中,我不知道如何工作。我用的是Kotl