2013-10-10 28 views
1

Hy!如何在matlab中創建一個對象數組的Map Container(HashMap)?

我有一個對象數組:bs_ek(帶有字段,方法的對象)。我想創建一個hashmap。

for i= 1: length(bs_ek) 
    k(i)=bs_ek(i).id; 
    end 


    rainfallMap = containers.Map(k, bs_ek) 

但我收到此錯誤信息:使用containers.Map 指定的值類型不符合預期該容器的類型

錯誤。

我創建了一個新的單元陣列與bs_ek元素:

value2 = {bs_ek(1), bs_ek(2), bs_ek(3),bs_ek(4), bs_ek(5), bs_ek(6), bs_ek(7), bs_ek(8), bs_ek(9), bs_ek(10), bs_ek(11) }; 

,它的工作:

rainfallMap = containers.Map(k, value2) 

本作的地圖。但是bs_ek的長度不是固定的(每次不是11),我想每次開始更改這個數字。

在此先感謝。

回答

0

這可以很容易地固定(假定該ID是一個符號整數):

rainfallMap = containers.Map('KeyType', 'int32', 'ValueType', 'any'); 
for i = 1:length(bs_ek) 
    rainfallMap(bs_ek(i).id) = bs_ek(i); 
end 

但有,我沒有一個答案的一個問題:上述方法,只會複製 bs_ek(i)到散列映射,所以如果稍後更改bs_ek,則這些更改將不會反映在散列映射中。

相關問題