2011-09-28 30 views
0

當我收集時,每個對象都是唯一的,但它們屬於某個parentId,應該如何存儲它?如何在沒有唯一標識的列表中保存對象(belongsTo,hasMany)

我的想法是

  • ArrayList <MyType> objects_list; //來存儲這些對象
  • ArrayList <int[]> parents_list //存儲parent_id VS int[] object_list.id

所以連接將

  • object_list.item belongsTo parents_list.item
  • parents_list.item hasMany object_list.item

是不是有一些更高效,更多的Java,解決方案嗎?


多一點解釋:

我有對象,其中每一個對象在內的一些變量parent_id的集合。
我需要存儲這些對象,這樣我就可以很容易地通過他們的parent_id

選擇所有對象,我不能用一個簡單的ArrayList與parent_idkey,因爲key必須是唯一的。

那麼如何存儲它們以獲取所有對象parent_id就像Collection.getByParentId(parent_id)

+0

它的不夠清楚你想acheive你能更具體.... –

+0

什麼@ LalitPoptani補充說明 –

+0

這裏使用Map是個好主意... –

回答

2

就像Dave之前說的,父ID存儲在MyType

// all MyType objects 
List<MyType> objects; 

// This way you could track the relations 
// (you would have to update this on change) 
Map<Integer, List<MyType>> relations; 
+0

Guava的MultiMap實現Map >。 –

+0

好現在,我會記住你的建議。基本上它應該做內部完全一樣,我建議... – Knickedi

+0

謝謝,我最好使用我自己的實現比在這種情況下,一些圖書館。 –

1

是;在MyType中保留parent_id,或者不要將它存儲在任何地方,並在需要時使用父對象的ID(目前尚不清楚你實際嘗試完成的內容)。

1
HashMap<Integer, ArrayList<MyObject>> myObjects = new HashMap(); // Assuming parent_id is Integer 

您可以像這樣訪問:

ArrayList<MyObject> myObjectsArray = myObjects.get(parent_id); 
+0

我必須完全失明!當你把它寫下來時這很明顯。謝謝! –

2

使用try番石榴的ListMultimap

ListMultimap<Integer, MyType> map = ArrayListMultimap.<Integer, MyType>create(); 

然後,你可以這樣做:

List<MyType> children = map.get(parentId);