请参阅返回Enumeration<?>的两个不同实现
Vector<String> v = new Vector<>(map.keySet());
return v.elements();List<String> v = new ArrayList<>(map.keySet());
return Collections.enumeration(v);请注意,此处的返回类型Enumeration<?>**,不能更改。**
用一种比另一种有什么好处?
由于枚举类是同步的,我应该继续使用Vector吗?
我的目的不是比较Vector,而是从上述两种特定的代码用法中找到更好的实现。这里的答案也不同于What are the differences between ArrayList and Vector?
所以我不认为这是重复的。
发布于 2017-12-23 09:01:21
都不是。你不需要这些。Collections.enumeration()接受一个Collection参数,Set是一个Collection,Map.keySet()返回一个Set。
你只需要:
return Collections.enumeration(map.keySet());发布于 2017-12-23 08:20:50
使用这些过时的-though而不是废弃的类通常是一个业务决策。除了使用不同的API (如果可能的话)之外,您没有什么可以做的。
我不会用Vector。如果您不需要在您自己的代码中进行同步,请使用集合框架。如果确实需要同步,请使用同步,使用来自java.util.concurrent的类。
无论哪种方式,都可以使用Collections.enumeration将它们转换为枚举。
发布于 2017-12-23 08:23:51
根据用例的不同,如果您不关心线程安全,那么就使用ArrayList,这样您就不会得到同步方法的额外开销,否则就使用Vector。
https://stackoverflow.com/questions/47950710
复制相似问题