2011-03-10 65 views
2

我有一个向量包含x。将Object[]作为列表的值,并在其末尾添加y元素的最优雅方式是什么?最优雅的方式来添加从Java中的矢量不同的对象

xy不是同一类左右。

明显的解决方案将是使一个新的Object[]用的Vector + 1的大小。然后在其上进行迭代,并添加每个x,然后在末尾添加y

此外,

Object[] objectArray = vector.toArray(); 

会由1

回答

1
Vector vector= new Vector(); 
vector.add(x); 

Vector temp = new Vector(vector); 
temp.add(y); 
Object[] objectArray = temp.toArray(); 

使objectArray收缩(如果我理解正确的将q ...)

+0

你可以通过提供一个完整的代码片段来说明这一点。它非常容易混淆,我有2个问题给你1>我没有看到在向量中的任何地方添加了'x',就像指出的那样。做这个部分以及'作为一个Object []'获得列表值的最优雅的方式'。您能提供完整的功能代码片段吗? – Deepak 2011-03-10 11:41:41

+1

@Deepak:代码片段已完成。第一行将所有元素(X实例)复制到新的临时向量中。第二行在临时向量的末尾添加一个y,第三行将包含x和y的临时向量转换为数组。因此制作了两个阵列副本,我发现它们并不那么优雅,但是YMMV。 – 2011-03-10 12:01:14

+0

什么是'矢量'在'矢量温度=新的矢量(矢量);'你能告诉我从哪里'(矢量)'越来越人口。 – Deepak 2011-03-10 13:36:51

1
vector.add(myY); 
Object[] arr = vector.toArray(); 
vector.remove(vector.size()-1); 

而且你必须如果您不想在任何情况下发生任何意外情况,请在矢量上同步:

synchronized (vector) { 
    vector.add(myY); 
    Object[] arr = vector.toArray(); 
    vector.remove(vector.size()-1); 
    } 
3
Object[] result = new Object[vector.size() + 1]; 
result = vector.toArray(result); 
result[result.length - 1] = y; 

这种解决方案并不需要一个临时矢量,而不会修改原始载体。

相关问题