Java 是否使用ArrayList或Vector检索枚举?
请参阅返回Java 是否使用ArrayList或Vector检索枚举?,java,arraylist,vector,Java,Arraylist,Vector,请参阅返回枚举的两个不同实现 Vector v=新向量(map.keySet()); 返回v.elements(); List v=newarraylist(map.keySet()); 返回集合。枚举(v); 请注意,此处的返回类型枚举,无法更改。 使用一个比另一个有什么好处吗 由于枚举类是同步的,我最好还是坚持使用Vector 我的目的不是比较Vector和ArrayList,而是从以上两种特定的代码用法中找到更好的实现。这里的答案也不同于 因此,我认为这不符合复制的条件。使用这些过
枚举的两个不同实现
Vector v=新向量(map.keySet());
返回v.elements();
List v=newarraylist(map.keySet());
返回集合。枚举(v);
请注意,此处的返回类型枚举
,无法更改。
使用一个比另一个有什么好处吗
由于枚举类是同步的,我最好还是坚持使用Vector
我的目的不是比较Vector和ArrayList,而是从以上两种特定的代码用法中找到更好的实现。这里的答案也不同于
因此,我认为这不符合复制的条件。使用这些过时的类(尽管不是弃用的)通常是一项业务决策。对此您无能为力,除非,如果可能,使用不同的API 我不会使用向量。如果您自己的代码中不需要同步,请使用Collections框架。如果确实需要同步,请使用同步,使用
java.util.concurrent
中的类
无论哪种方式,都可以使用集合.枚举来将它们转换为枚举。使用这些过时的类(尽管不是弃用的)通常是一项业务决策。对此您无能为力,除非,如果可能,使用不同的API 我不会使用向量。如果您自己的代码中不需要同步,请使用Collections框架。如果确实需要同步,请使用同步,使用
java.util.concurrent
中的类
无论哪种方式,都可以使用集合。枚举来将它们转换为枚举。根据您的使用情况,如果您不关心线程安全,那么请使用ArrayList,这样您就不会得到Vector的同步方法的额外开销,
否则请使用Vector。根据您的用例,如果您不关心线程安全,请使用ArrayList,这样您就不会得到Vector同步方法的额外开销,
否则使用Vector。我认为,如果只想获得枚举,则没有区别 向量构造函数如下所示
public Vector(Collection<? extends E> c) {
elementData = c.toArray();
elementCount = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, elementCount, Object[].class);
}
public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
if ((size = elementData.length) != 0) {
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
} else {
// replace with empty array.
this.elementData = EMPTY_ELEMENTDATA;
}
}
publicvector(Collection我认为,如果只想获得枚举,则没有什么区别
向量构造函数如下所示
public Vector(Collection<? extends E> c) {
elementData = c.toArray();
elementCount = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, elementCount, Object[].class);
}
public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
if ((size = elementData.length) != 0) {
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
} else {
// replace with empty array.
this.elementData = EMPTY_ELEMENTDATA;
}
}
public Vector(Collection两者都不需要。您不需要这两者。Collections.enumeration()
接受一个Collection
参数,Set
是一个Collection
,而Map.keySet()
返回一个集
你只需要:
return Collections.enumeration(map.keySet());
两者都不需要。Collections.enumeration()
接受一个Collection
参数,Set
是集合
,而Map.keySet()
返回一个Set
你只需要:
return Collections.enumeration(map.keySet());
自Java 2以来,Vector和Enumeration的可能重复项已过时。请不要再使用它们。我不认为这是重复项,因为它比ArrayList和Vector更具体。@JBNizet Enumeration已经在使用。因此不可能更改。我只想知道这两种方法的更好实现是什么。从我的评论中,我认为您可以有把握地得出结论,Vector自Java 2以来就过时了,因此您不应该再使用它。Vector和枚举的可能重复项自Java 2以来就过时了。请不要再使用它们。我不认为这是重复项,因为它比ArrayList和Vector更具体。@JBNizet枚举已在使用。因此是不可能改变的。我只是想知道从这两个方面看什么是更好的实现。从我的评论中,我认为您可以安全地得出结论,Vector自Java 2以来已经过时,因此您不应该再使用它。