在此实例中保存数据的结构(Hashmap/ArrayList 等)?

发布于 2024-11-04 10:52:36 字数 512 浏览 2 评论 0原文

描述这一点的最好方法是解释情况。

想象一下我有一家生产椅子的工厂。现在工厂分为5个部分。一把椅子可以完全在一个区域或多个区域上制作。椅子的制造者将椅子的属性添加到椅子对象中。最终,这些对象由我的想象程序收集并添加到 X 数据类型(ArrayList 等)中。

添加椅子时,它必须检查椅子是否已经存在,如果是,则不要替换现有的椅子,而是附加该椅子的属性(不要担心这部分,我已经涵盖了这一点)

所以基本上我想要一个比我可以轻松实现的结构检查对象是否存在(如果不是直接插入),否则执行附加操作。所以我需要找到与某个唯一 ID 匹配的椅子。有点像一套。除了不匹配同一个对象之外,如果一把椅子是在三个区域中制作的,那么它将是三个不同的对象 - 在现实生活中,它们都代表同一个对象 - 但我只想要一个对象来保存所有对象的全部属性内容椅子。

一旦收集并在工厂的所有区域执行更新,它就需要迭代每个对象并将其内容添加到数据库中。再次不要添加到所涵盖的数据库等。

我只是想知道 Java 中最适合这个规范的数据结构是什么。

先感谢您。

Best way to describe this is explain the situation.

Imagine I have a factory that produces chairs. Now the factory is split into 5 sections. A chair can be made fully in one area or over a number of areas. The makers of the chairs add attributes of the chair to a chair object. At the end of the day these objects are collected by my imaginary program and added into X datatype(ArrayList etc).

When a chair is added it must check if the chair already exists and if so not replace the existing chair but append this chairs attributes to it(Dont worry about this part, Ive got this covered)

So basically I want a structure than I can easily check if an object exists if not just straight up insert it, else perform the append. So I need to find the chair matching a certain unique ID. Kind of like a set. Except its not matching the same object, if a chair is made in three areas it will be three distinct objects - in real life they all reperesent the same object though - yet I only want one object that will hold the entire attribute contents of all the chairs.

Once its collected and performed the update on all areas of the factory it needs iterate over each object and add its contents to a DB. Again dont worrk about adding to the DB etc thats covered.

I just want to know what the best data structure in Java would be to match this spec.

Thank you in advance.

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

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

发布评论

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

评论(3

錯遇了你 2024-11-11 10:52:36

我想说的是 HashMap:它可以让您快速检查是否存在具有给定唯一 ID 的对象,并检索该对象(如果该对象确实存在于集合中)。然后,只需执行合并函数即可将属性添加到集合中已有的对象中。

与大多数其他集合(例如 ArrayList)不同,HashMap 实际上针对通过唯一 ID 查找某些内容进行了优化,并且无论集合中有多少对象,它的执行速度都一样快。

这个答案最初参考了 Hashtable 类,但经过进一步的研究(和一些好的评论),我发现使用 HashMap 总是更好。如果需要同步,可以调用Collections.synchronizedMap()。请参阅此处了解更多信息。

I'd say a HashMap: it lets you quickly check whether an object exists with a given unique ID, and retrieve that object if it does exist in the collection. Then it's simply a matter of performing your merge function to add attributes to the object that is already in the collection.

Unlike most other collections (ArrayList, e.g.), HashMaps are actually optimized for looking something up by a unique ID, and it will be just as fast at doing this regardless of how many objects you have in your collection.

This answer originally made reference to the Hashtable class, but after further research (and some good comments), I discovered that you're always better off using a HashMap. If you need synchronization, you can call Collections.synchronizedMap() on it. See here for more information.

你列表最软的妹 2024-11-11 10:52:36

我会说使用ArrayList。重写 Chair 对象上的 hashcode/equals() 方法以使用唯一 ID。这样你就可以使用 list.contains(chair) 来检查它是否存在。

I'd say use ArrayList. Override the hashcode/equals() method on your Chair object to use the unique ID. That way you can just use list.contains(chair) to check if it exists.

似狗非友 2024-11-11 10:52:36

我想说使用 EnumMap。定义所有可能的部件类别的 enum,以便您可以查询 EnumMap 来查找缺少的部件

public enum Category {
    SEAT,REST,LEGS,CUSHION
}

I'd say use an EnumMap. Define an enum of all possible part categories, so you can query the EnumMap for which part is missing

public enum Category {
    SEAT,REST,LEGS,CUSHION
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文