Java 将原始向量转换为类型安全列表(Arraylist)的最佳方法是什么

Java 将原始向量转换为类型安全列表(Arraylist)的最佳方法是什么,java,generics,vector,arraylist,Java,Generics,Vector,Arraylist,我有一个返回原始向量的函数。我知道向量中的所有元素都是字符串,但代码由于缺乏灵活性而保留。我想从这些数据中得到一个arraylist 一种简单的方法是迭代向量并向列表中添加元素。有没有什么简单的方法可以防止循环。或者可以是启用此功能的直接功能 编辑: 例如: Vector f1() {} //f1 returns raw vector 我希望实现以下目标: List<String> l = new ArrayList<String>(); Vector vec = f

我有一个返回原始向量的函数。我知道向量中的所有元素都是字符串,但代码由于缺乏灵活性而保留。我想从这些数据中得到一个arraylist

一种简单的方法是迭代向量并向列表中添加元素。有没有什么简单的方法可以防止循环。或者可以是启用此功能的直接功能

编辑:

例如:

Vector f1() {}  //f1 returns raw vector
我希望实现以下目标:

List<String> l = new ArrayList<String>();
Vector vec = f1();
for(Object obj: vec) {
    l.add((String) obj);
}
listl=newarraylist();
向量vec=f1();
用于(对象对象对象:vec){
l、 添加((字符串)obj);
}

注意:我没有检查上面的代码是否编译。请将其视为伪代码

如果您100%确定向量只包含字符串,最简单的方法是:

List<String> list = new ArrayList<>(vector);
如果第i个元素不是字符串,则将抛出一个
ClassCastException

因为你有一个原始向量,你会得到警告。如果你想摆脱它们,你可以使用:

@SuppressWarnings(value = {"unchecked", "rawtypes"})
public static List<String> rawVectorToList(Vector v) {
    return new ArrayList<>(v);
}
@SuppressWarnings(值={“unchecked”,“rawtypes”})
公共静态列表rawVectorToList(向量v){
返回新的ArrayList(v);
}

快速检测强制转换问题的另一种方法是手动复制阵列(复制构造函数在后台执行的操作):

向量v=。。。; String[]elements=Arrays.copyOf(v.toArray()、v.size()、String[].class); 列表=数组.asList(元素); 或者,如果您需要列表是可变的:

List<String> list = new ArrayList<> (Arrays.asList(elements));
List List=newarraylist(Arrays.asList(elements));

这有利于在复制时检查类型。

您需要指定所需的输入和输出。示例:输入
对象[]
,输出
列表
@UmNyobe请查看编辑。它会抛出警告。我想摆脱警告。甚至我们也可以做
List List=newarraylist(vec)但这也会发出警告。定时炸弹+1。你不像你看起来的那样性感(或者我以前用过吗?)@Bohemian是的,我想你已经这么做了!不过还是很有趣!它会抛出一个警告,因为您所做的是不安全的,特别是因为爆炸可能发生在代码中很远的地方,而且可能发生在很久以后,从进行转换时开始。@Bohemian我认为编写循环是唯一好的方法吗?
Vector v = ...;
String[] elements = Arrays.copyOf(v.toArray(), v.size(), String[].class);
List<String> list = Arrays.asList(elements);
List<String> list = new ArrayList<> (Arrays.asList(elements));