如何在没有唯一ID的列表中保存对象(belongsTo,hasMany)

时间:2011-09-28 13:36:47

标签: java android collections has-many belongs-to

当我有集合时,每个对象都是唯一的,但它们属于某个parentId,我应该如何存储它?

我的想法是

  • 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

轻松选择所有对象

我不能使用parent_id作为key的简单一个ArrayList,因为key必须是唯一的。

那么如何存储它们,以parent_id之类的Collection.getByParentId(parent_id)来获取所有对象?

4 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

尝试使用Guava的ListMultimap

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

然后你可以这样做:

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

答案 2 :(得分:1)

是;将parent_id保留在MyType中,它所属的位置,或者不将它存储在任何地方,并在需要时使用父对象的ID(目前还不清楚你实际上想要实现的目标)。

答案 3 :(得分:1)

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

你可以像这样访问它:

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