今天读Heritrix看到这么个类,设计非常棒,多个集合的合并其实并不需要新建集合对象,并进行数据搬移。
public class CompositeIterator<E> implements Iterator<E> {
protected ArrayList<Iterator<E>> iterators = new ArrayList<Iterator<E>>();
protected Iterator<E> currentIterator;
protected int indexOfCurrentIterator = -1;
/**
* Moves to the next (non empty) iterator. Returns false if there are no
* more (non empty) iterators, true otherwise.
* @return false if there are no more (non empty) iterators, true otherwise.
*/
private boolean nextIterator() {
if (++indexOfCurrentIterator < iterators.size()) {
currentIterator = iterators.get(indexOfCurrentIterator);
// If the new iterator was empty this will move us to the next one.
return hasNext();
} else {
currentIterator = null;
return false;
}
}
/* (non-Javadoc)
* @see java.util.Iterator#hasNext()
*/
public boolean hasNext() {
if(currentIterator!=null && currentIterator.hasNext()) {
// Got more
return true;
} else {
// Have got more if we can queue up a new iterator.
return nextIterator();
}
}
/* (non-Javadoc)
* @see java.util.Iterator#next()
*/
public E next() {
if(hasNext()) {
return currentIterator.next();
} else {
throw new NoSuchElementException();
}
}
/* (non-Javadoc)
* @see java.util.Iterator#remove()
*/
public void remove() {
throw new UnsupportedOperationException();
}
/**
* Create an empty CompositeIterator. Internal
* iterators may be added later.
*/
public CompositeIterator() {
super();
}
/**
* Convenience method for concatenating together
* two iterators.
* @param i1
* @param i2
*/
public CompositeIterator(Iterator<E> i1, Iterator<E> i2) {
this();
add(i1);
add(i2);
}
/**
* Add an iterator to the internal chain.
*
* @param i an iterator to add.
*/
public void add(Iterator<E> i) {
iterators.add(i);
}
}
分享到:
相关推荐
网上有好多实体转另一个实体的方法,但是几乎没有实体集合直接转另一个实体集合的工具类,自己写了一个,供大家使用。其实原理很简单,就是泛型。
- 这是一个包含各种静态方法的工具类,用于操作集合,如排序、查找、填充、反转、比较等。 3. `java.util.HashMap` 和 `java.util.TreeMap`: - `HashMap` 是基于哈希表实现的键值对容器,提供O(1)的平均查找速度...
Java将2个List集合合并到一个List里面并排序工具类 1、Java编程资源,定义了一个名为`ListMerger`的工具类,主要包含一个名为`mergeAndSortLists`的静态方法。此方法用于将两个已经根据时间顺序排列的List合并成一...
15.java集合工具类(了解)后期扩展.zip15.java集合工具类(了解)后期扩展.zip15.java集合工具类(了解)后期扩展.zip15.java集合工具类(了解)后期扩展.zip15.java集合工具类(了解)后期扩展.zip15.java集合工具...
"java常用工具类集合"是一个综合性的资源,它包含了从不同来源收集的实用工具类,旨在帮助开发者提高效率,减少代码重复。下面,我们将深入探讨这个主题,分析其中可能包含的知识点。 首先,`opslabJutil-master....
总的来说,"Android真实项目所需要的所有工具类集合" 是一个非常有价值的资源,它为Android开发者提供了强大的辅助,减少了重复劳动,提升了项目的质量和开发速度。无论你是初学者还是经验丰富的开发者,这个工具包...
C#常用工具类代码集合Util第二版本(自己工作总结),包括常用工具类,扩展方法工具类,百度地图C#工具类,Echart工具类,Office工具类,Autofac工具类,Web开发常用工具类,Winform开发常用工具类,是自己工作十年...
ArrayList集合工具类是Java编程语言中的一个重要组成部分,它属于Java集合框架的一部分,主要用来存储一组有序的、可变大小的对象。ArrayList是基于数组实现的,它提供了动态增长的能力,允许我们在列表的任何位置...
Java工具类代码集合是Java开发中非常重要的组成部分,它们提供了许多通用的功能,使得开发者能够更加高效地编写代码,避免重复劳动。在这个集合中,我们通常会看到各种实用的方法,涵盖字符串处理、数组操作、日期...
标题提到的"Util工具类集合"可能是一个包含多个实用工具类的资源包,提供了多种功能。下面将详细讨论Util工具类以及可能包含在压缩包中的两个文件`UtilBean.java`和`JDBCBean.java`。 1. **Util工具类**: Util...
将collection转换为string. collection中的每个元素都 是自定义类, propertyName object的属性,将集合转成字符串,以,分割。还可以判断集合是否为空
1.将数组转换成list集合 2.将拼接的string字符串转换成list集合 3.将list集合变成元素拼接形式 4.集合去重
标题中的"工具类的jar包集合"指的是一个包含多种实用工具类的Java库,这些类在不同的项目中可以被重复使用以提高开发效率。描述提到这是个人在学习过程中整理的集合,表明这是一个开发者为了方便自己和他人在多个...
这个"android常用工具类集合(可直接使用)"是一个实用的资源,包含了一系列预封装好的函数,方便开发者快速集成到自己的项目中。 1. **字符串处理工具类**:在Android开发中,字符串的处理是非常常见的,如格式化...
以下是对"Android-简单的Android工具类包含ActivityFragmentApplication基类和各类常用工具类集合"这个主题的详细解析。 1. **Activity基类**: - Activity基类通常包含一些通用的方法,如初始化布局、处理权限、...
在IT行业中,尤其是在Android开发领域,"sp缓存list集合工具类"是一个常见的概念,它涉及到数据存储和优化。SP通常指的是SharedPreferences,这是一种轻量级的数据存储方式,用于保存应用程序中的简单键值对数据,如...
在Android开发过程中,工具类集合是非常重要的一部分,它们可以极大地提高开发效率,简化代码,使得开发者能够更加专注于业务逻辑。本篇文章将详细讲解"android常用工具类集合"中涉及的关键知识点,包括网络连接、...
本资源“Android常用工具类集合”是一个专门为Android平台设计的库,其中封装了一系列常用的工具方法,旨在简化开发流程。下面将详细介绍这个库中的关键知识点。 1. **网络请求封装**: - 使用RxJava进行网络请求...
在Java编程语言中,工具类集合是一系列实用的类,它们提供了各种通用功能,帮助开发者更高效地编写代码。这些工具类通常包含在Java的`java.util`以及其他相关的包中,如`java.text`,`javax.imageio`,`javax.xml`等...
提供的文件名“Tool”可能表示这个压缩包包含一个或多个工具类文件,可能以.m和.h的形式存在,分别代表实现文件和接口文件。在iOS项目中,这些工具类通常会被添加到项目的公用类别(Categories)或工具类(Utils)...