关于java:IterableIterator-转-list

31次阅读

共计 1066 个字符,预计需要花费 3 分钟才能阅读完成。

先简略介绍一下 iterable 和 iterator:

iterator 为 Java 中的迭代器对象,是可能对 List 这样的汇合进行迭代遍历的底层依赖。而 iterable 接口里定义了返回 iterator 的办法,相当于对 iterator 的封装,同时实现了 iterable 接口的类能够反对 for each 循环。

尽管咱们平时的加强 for 循环都是基于 iterator 迭代器来实现,然而如果有一组数据是由 iterable 来存储的,咱们遍历再操作起来就很麻烦,就要去思考将 iterable 转为 list 再来进行操作:

1.iterable 转 list

Iterable<Entity> geted = entityDao.findAll();
List<Entity> list = Lists.newArrays();
geted.forEach(single ->{list.add(single)});

在上边的例子中,咱们假如 geted 是从长久层获取的 iterable 数据,而后咱们 new 一个 list 汇合,再通过 iterable 的 foreach 办法循环,将元素存入 list 的汇合中即可(留神泛型统一)。

2.iterator 转 list

 形式 1:import org.apache.commons.collections.IteratorUtils;
Iterator<Element> myIterator = elementDao.findAll();
List<Element> myList=IteratorUtils.toList(myIterator);   
 
 
形式二:本人转换
public static <T> List<T> copyIterator(Iterator<T> iter) {List<T> copy = new ArrayList<T>();
    while (iter.hasNext())
        copy.add(iter.next());
    return copy;
}
 
应用形式:List<String> list = Arrays.asList("1", "2", "3");
Iterator<String> iter = list.iterator();
List<String> copy = copyIterator(iter);
 
形式 3:#Guava
import com.google.common.collect.Lists;
Iterator<Element> myIterator = elementDao.findAll();
List<Element> myList = Lists.newArrayList(myIterator);

正文完
 0