先简略介绍一下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:#Guavaimport com.google.common.collect.Lists;Iterator<Element> myIterator = elementDao.findAll();List<Element> myList = Lists.newArrayList(myIterator);