Collections.list方法能将Enumeration转换为ArrayList,简化了旧代码与现代集合框架的集成。它通过同步遍历确保线程安全,一行代码即可完成转换,避免手动循环。相比Enumeration,List具备更丰富的API、支持索引访问、迭代器增强、泛型安全及Stream操作,利于现代Java开发。除Collections.list外,还可采用手动迭代或Stream API结合Iterator的方式实现转换,后者适用于需链式处理的场景。使用时需注意传入参数非null、Enumeration的一次性特性、大数据集的内存开销,以及多线程环境下源数据结构的并发修改风险。尽管返回类型固定为ArrayList,但在多数场景下性能良好,是迁移遗留代码的理想选择。

Collections.list
Enumeration
List
ArrayList
HttpServletRequest
getHeaderNames()
Enumeration
ArrayList
在使用
Collections.list
Enumeration
ArrayList
Enumeration
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
import java.util.Vector;
public class EnumerationToListConverter {
public static void main(String[] args) {
// 假设我们有一个Enumeration,这里用Vector来模拟生成一个
Vector<String> oldData = new Vector<>();
oldData.add("Item A");
oldData.add("Item B");
oldData.add("Item C");
Enumeration<String> enumeration = oldData.elements();
// 使用Collections.list进行转换
List<String> modernList = Collections.list(enumeration);
System.out.println("转换后的List内容:");
for (String item : modernList) {
System.out.println(item);
}
// 验证类型,它返回的是一个ArrayList
System.out.println("返回的List类型是: " + modernList.getClass().getName());
// 输出: 返回的List类型是: java.util.ArrayList
}
}在我看来,这种方式的简洁性是其最大的优点。一行代码就能完成原本可能需要循环遍历、手动添加的繁琐操作。
这个问题其实触及到了Java集合框架演进的核心。
Enumeration
Iterator
Collection
而
List
Collection
List
Enumeration
List
get(int index)
set(int index, E element)
add(int index, E element)
remove(int index)
subList()
Enumeration
List
iterator()
Iterator
listIterator()
ListIterator
Enumeration
hasMoreElements()
nextElement()
List
Set
Map
Collections.sort()
Collections.list
Enumeration
List<E>
List
Enumeration
所以,将
Enumeration
List
当然,
Collections.list
手动迭代法: 这是最直接,也是最基础的方法。创建一个新的
ArrayList
Enumeration
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Vector;
public class ManualConversion {
public static void main(String[] args) {
Vector<Integer> numbers = new Vector<>();
numbers.add(10);
numbers.add(20);
numbers.add(30);
Enumeration<Integer> enumeration = numbers.elements();
List<Integer> manualList = new ArrayList<>();
while (enumeration.hasMoreElements()) {
manualList.add(enumeration.nextElement());
}
System.out.println("手动转换的List: " + manualList);
}
}这种方式的好处在于你可以完全控制列表的初始化容量,或者在添加过程中进行一些额外的逻辑处理。但缺点是代码量相对
Collections.list
Java 8 Stream API 结合法: 如果你使用的是Java 8或更高版本,并且希望利用Stream的强大功能,可以先将
Enumeration
Iterator
Iterator
Enumeration
stream()
Iterator
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import java.util.stream.StreamSupport;
public class StreamConversion {
public static void main(String[] args) {
Vector<String> words = new Vector<>();
words.add("Apple");
words.add("Banana");
words.add("Cherry");
Enumeration<String> enumeration = words.elements();
// 将Enumeration转换为Iterator
Iterator<String> iterator = new Iterator<String>() {
@Override
public boolean hasNext() {
return enumeration.hasMoreElements();
}
@Override
public String next() {
return enumeration.nextElement();
}
};
// 从Iterator创建Stream,然后收集到List
// Spliterator.spliteratorUnknownSize适用于不知道大小的Iterator
List<String> streamList = StreamSupport.stream(
new Iterable<String>() {
@Override
public Iterator<String> iterator() {
return iterator;
}
}.spliterator(), false) // false表示非并行流
.collect(ArrayList::new, ArrayList::add, ArrayList::addAll); // 或者直接 .collect(Collectors.toList());
System.out.println("Stream转换的List: " + streamList);
}
}这种方式看起来代码量更多,因为它需要一个中间的
Iterator
filter
Map
Enumeration
Iterable
Vector
vector.stream().collect(Collectors.toList())
在我看来,选择哪种方法,很大程度上取决于你项目的Java版本、对代码简洁度的偏好,以及是否需要后续的复杂数据处理。对于简单的转换,
Collections.list
尽管
Collections.list
空指针风险: 如果你传入的
Enumeration
null
Collections.list(null)
NullPointerException
一次性遍历特性:
Enumeration
Iterator
Collections.list
Enumeration
Enumeration
List
性能考量(对于超大数据集):
Collections.list
ArrayList
Enumeration
Enumeration
Enumeration
线程安全性与并发修改:
Collections.list
Enumeration
synchronized
Enumeration
Collections.list
ConcurrentModificationException
Enumeration
Vector
Vector
Enumeration
返回类型是ArrayList
Collections.list
ArrayList
List
LinkedList
ArrayList
总的来说,
Collections.list
Enumeration
List
以上就是Collections.list方法将Enumeration转为List的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号