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

发布于 2024-12-07 03:45:17 字数 795 浏览 1 评论 0原文

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

我的想法是

  • ArrayListobjects_list; // 存储这些对象
  • ArrayList; parents_list // 存储 parent_idint[] object_list.id

所以连接将是

  • object_list.item ownsToparents_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)

When I have collection, where each object is unique but they belong to some parentId, how should I store it?

My Idea is

  • ArrayList <MyType> objects_list; // to store those objects
  • ArrayList <int[]> parents_list // to store parent_id vs int[] object_list.id's

So connection would be

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

Isn't there some more efficient, more Java, solution?


Little more explain:

I have collection of object, where every object has parent_id in some variable within.
I need to store those objects, so that I could easily select all objects by their parent_id

And I cannot use simple one ArrayList with parent_id as key, because key has to be unique.

So how to store them, to fetch all objects by their parent_id like Collection.getByParentId(parent_id) ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

蓝咒 2024-12-14 03:45:17

就像戴夫之前说过,将父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;

Like Dave said before, store the parent ID in 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;
岁月静好 2024-12-14 03:45:17

尝试使用 Guava 的 ListMultimap

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

然后你可以这样做:

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

Try using Guava's ListMultimap

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

Then you can do:

List<MyType> children = map.get(parentId);
亢潮 2024-12-14 03:45:17

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

Yes; keep parent_id in MyType, where it belongs, or don't store it anywhere, and use the parent object's ID when you need it (it's unclear as worded what you're actually trying to accomplish).

云之铃。 2024-12-14 03:45:17
HashMap<Integer, ArrayList<MyObject>> myObjects = new HashMap(); // Assuming parent_id is Integer

您可以这样访问它:

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

You can access it like this:

ArrayList<MyObject> myObjectsArray = myObjects.get(parent_id);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文