需求场景:
已经知道了Iterator<T>,然后打算通过Iterator进行简单处理后变成List<?>,这种需求还是比较常见的,MR中最为常见。
方案:
第一种方式:
直接遍历迭代获取到T然后经过业务逻辑处理之后封装成?然后放入指定的List中去
第二种方式:
采用org.apache.commons.collections.CollectionUtils.collect进行转换,需要自己实现Transformer,也提供了一些常见的实现。
实现:
依赖jar:
commons-collections 2.6 commons-lang 3.2.1
构造数据:
List<String> list = new ArrayList<String>(); for (int i = 0; i < 10; i++) { list.add(RandomStringUtils.random(10, "abc")); }
转换操作:
CollectionUtils.collect(list.iterator(), TransformerUtils.nopTransformer())
TransformerUtils提供的Transformer实现:
org.apache.commons.collections.functors.ChainedTransformer; org.apache.commons.collections.functors.CloneTransformer; org.apache.commons.collections.functors.ClosureTransformer; org.apache.commons.collections.functors.ConstantTransformer; org.apache.commons.collections.functors.EqualPredicate; org.apache.commons.collections.functors.ExceptionTransformer; org.apache.commons.collections.functors.FactoryTransformer; org.apache.commons.collections.functors.InstantiateTransformer; org.apache.commons.collections.functors.InvokerTransformer; org.apache.commons.collections.functors.MapTransformer; org.apache.commons.collections.functors.NOPTransformer; org.apache.commons.collections.functors.PredicateTransformer; org.apache.commons.collections.functors.StringValueTransformer; org.apache.commons.collections.functors.SwitchTransformer;
相关推荐
Iterator<String> iterator = list.iterator(); ``` ##### 2. 遍历集合 一旦有了`Iterator`对象,就可以通过调用`hasNext()`和`next()`方法来遍历集合。示例代码如下: ```java while (iterator.hasNext()) { ...
### Collection、Map、List、Set、Iterator 的详细解析 #### Collection 接口 - **定义**:`Collection` 是 Java 集合框架的核心接口之一,几乎所有其他集合接口都直接或间接继承自它。它提供了对集合进行增删查改...
这个示例程序会读取指定路径的Excel文件,并将第一张工作表中的数据转换为`List<List<String>>`结构,同时打印出来。注意替换`"path_to_your_excel_file.xlsx"`为实际Excel文件的路径。 通过这种方式,你可以方便地...
val iterator = list.iterator while (iterator.hasNext) { println(iterator.next()) } // 输出: // 1 // 2 // 3 ``` #### 26. `def last: A` 此方法返回列表的最后一个元素。 **示例代码:** ```scala val list ...
Iterator(迭代器)是STL中的核心概念,它扮演着链接用户代码与容器(如vector、list、set等)的角色。`iterator.zip`中的内容很可能是关于STL迭代器使用的示例代码或教程。 迭代器在STL中被设计为一种通用的接口,...
Iterator<E> iterator = list.iterator(); ``` `iterator()`方法返回一个可以在列表元素上进行迭代的迭代器。 #### 13. 转换为字符串 ```java String str = list.toString(); ``` `toString()`方法返回表示此列表的...
Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } ``` 3. 使用传统的for循环: ```java for (int i = 0; i < list.size(); i++) { System.out...
在C++编程中,`Iterator`是访问容器(如`vector`、`list`、`set`等)中元素的主要接口。`Iterator`提供了一种方式来遍历容器的元素序列,而无需暴露容器的内部结构。以下是使用`Iterator`的一些关键知识点: 1. **...
add(int index, E element)是List接口的方法,用于在指定位置插入元素,ArrayList会移动后续元素,LinkedList则只需改变相邻节点的链接。 4. **remove()方法** - remove()方法有多种形式。List接口中的remove(int ...
Java中的`java.util.List`接口是集合框架的重要组成部分,它扩展了`Collection`接口,并引入了一些特定于列表的特性,如有序性、可重复性以及对元素的索引访问。这篇博客将深入探讨`List`接口及其常用实现类,如`...
在Java编程语言中,集合框架是处理对象集合的重要工具,其中List集合是广泛使用的接口之一。List接口继承自Collection接口,它定义了一种有序的、允许重复元素的集合。本篇我们将深入探讨List集合,包括其特点、常用...
- 集合类支持泛型,这意味着在创建集合实例时可以指定元素类型,从而在编译时提供类型检查,避免了类型转换异常,提高了代码的安全性。 7. **比较器与迭代器** - Comparator接口用于自定义对象间的比较规则,可以...
- 使用`toString()`方法可以将List转换为字符串,显示元素之间的逗号分隔格式。 11. **将集合转换为数组** - 通过`toArray(T[] array)`方法,可以将List转换为指定类型的数组,如`String[] array = list.toArray...
泛型允许开发者在声明集合时指定具体的类型,这样可以避免运行时的类型转换错误,并提高程序的安全性和可读性。例如,可以声明一个`List<String>`,这意味着列表只能存储字符串类型的元素。 #### 七、总结 Java...
在C++编程中,STL(Standard Template Library,标准模板库)是不可或缺的一部分,它提供了高效的数据结构(如vector、list、set等)和算法。然而,在处理MFC(Microsoft Foundation Classes)库中的集合类时,由于...
Java 高级编程技术涉及了多个关键知识点,包括但不限于数据结构转换、集合操作、文件读写、数据库交互以及数据格式转换。以下是对这些知识点的详细解释: 1. **数据结构转换与迭代**: - 在Java中,可以使用`...
Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } } ``` - **注意事项**:即使使用了同步集合,迭代器仍然需要在同步块内使用。 3. ...
对于List,可以使用Collections.sort()方法进行排序,对于Map,通常需要转换成List后再排序。例如,对于TreeMap,其内部已经按照键的自然顺序或比较器排序。 总结,Java集合框架提供了丰富的数据结构和操作,理解并...
在 getList4Json() 方法中,我们使用 JSONArray.fromObject() 方法将 json 对象集合表达式转换为 JSONArray 对象,然后使用 Iterator 对象来遍历 JSONArray 对象的元素,并将其存储到 List 对象中。 本资源提供了...