2011-03-10 51 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; 

這種解決方案並不需要一個臨時矢量,而不會修改原始載體。

相關問題