Collections.list() 将 Enumeration 转为 ArrayList,实现新旧 API 平滑过渡,简化代码并支持现代集合操作。

Collections.list()
Enumeration
ArrayList
Collection
在 Java 的早期版本中,
Enumeration
Hashtable
elements()
keys()
Vector
elements()
Iterable
List
Collection
Collections.list()
Enumeration
Enumeration
ArrayList
List
List
get(index)
subList()
sort()
来看一个简单的例子,假设我们有一个
Hashtable
立即学习“Java免费学习笔记(深入)”;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;
public class EnumerationToListExample {
public static void main(String[] args) {
Hashtable<String, String> properties = new Hashtable<>();
properties.put("user", "admin");
properties.put("env", "dev");
properties.put("version", "1.0");
// 获取Enumeration
Enumeration<String> keysEnumeration = properties.keys();
// 使用Collections.list() 转换为List
List<String> keyList = Collections.list(keysEnumeration);
System.out.println("转换后的List: " + keyList);
// 现在可以对List进行各种操作了
keyList.sort(String::compareTo);
System.out.println("排序后的List: " + keyList);
// 或者转换为Stream
keyList.stream().filter(s -> s.startsWith("v")).forEach(System.out::println);
}
}这个方法虽然简单,但其价值在于提供了一个优雅的桥梁,避免了手动循环
while(enumeration.hasMoreElements())
list.add(enumeration.nextElement())
在现代 Java 开发语境下,
Enumeration
List
Collection
Enumeration
Iterator
remove()
Enumeration
ClassCastException
此外,
Enumeration
hasMoreElements()
nextElement()
List
Collection
get(index)
add()
remove()
indexOf()
subList()
再者,
Enumeration
Iterable
Stream
Enumeration
Iterable
stream()
Collections.list()
List
stream()
Enumeration
List
Enumeration
所以,将
Enumeration
List
Collections.list()
public static <T> ArrayList<T> list(Enumeration<T> e) {
ArrayList<T> list = new ArrayList<>(); // 创建一个新的ArrayList
while (e.hasMoreElements()) { // 遍历Enumeration
list.add(e.nextElement()); // 将每个元素添加到List中
}
return list; // 返回填充好的List
}可以看到,它本质上就是创建了一个新的
ArrayList
Enumeration
hasMoreElements()
nextElement()
ArrayList
Enumeration
add()
那么,除了
Collections.list()
Collections.list()
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;
public class ManualEnumerationToListExample {
public static void main(String[] args) {
Hashtable<String, String> data = new Hashtable<>();
data.put("key1", "value1");
data.put("key2", "value2");
Enumeration<String> keysEnum = data.keys();
// 手动转换方法1:使用while循环
List<String> manualList1 = new ArrayList<>();
while (keysEnum.hasMoreElements()) {
manualList1.add(keysEnum.nextElement());
}
System.out.println("手动转换方法1: " + manualList1);
// 注意:Enumeration是单向的,一旦遍历完就不能再次使用。
// 如果要演示其他方法,需要重新获取Enumeration。
Enumeration<String> keysEnum2 = data.keys();
// 手动转换方法2:如果想更“现代”一点,可以先转为Iterator,再转为List(Java 9+)
// 这种方式通常不会直接用在Enumeration上,因为Collections.list()更直接。
// 但如果有一个老旧的Enumeration,又想用Stream,可以这样:
List<String> manualList2 = new ArrayList<>();
// 假设这里我们重新获取了 keysEnum2
keysEnum2.asIterator().forEachRemaining(manualList2::add);
System.out.println("手动转换方法2 (Java 9+): " + manualList2);
}
}从性能角度来看,
Collections.list()
while
Collections.list()
Enumeration
以上就是Java中Collections.list方法将Enumeration转List的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号