Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否使用ArrayList或Vector检索枚举?_Java_Arraylist_Vector - Fatal编程技术网

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以来已经过时,因此您不应该再使用它。