任何人都可以让我知道在java中实时使用空Iterator是什么时候?我很想知道为什么需要它?像,
1. public static <T> Iterator<T> emptyIterator()
2. public static <T> ListIterator<T> emptyListIterator()
3. public static final <T> Set<T> emptySet(), etc..
Run Code Online (Sandbox Code Playgroud)
来源:http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#emptyIterator()
Dam*_*ash 13
在您实现的API需要迭代器的情况下,您可以使用空迭代器,但是某些代码的逻辑在结果中不会产生任何项.在这种情况下,不返回a null,而是返回一个空迭代器.您还可以使用空迭代器来节省一些内存并用于测试目的.
下面是一些示例代码,可以防止返回null并同时保存一些内存:
class LazyObjectInitialization {
private Collection<String> items;
public final Iterator<String> items() {
if(items == null || items.isEmpty()) {
return Collections.emptyIterator();
}
return items.iterator();
}
public final add(String item) {
if(items == null) {
items = new ArrayList<>();
}
items.add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的类中,在items添加元素之前不会初始化该字段.因此,为了在方法中提供预期的行为,items()我们返回一个空的迭代器.这样做的好处如下:
较小的内存消耗
较小的记忆突变
我们永远不会返回null.
| 归档时间: |
|
| 查看次数: |
12086 次 |
| 最近记录: |