首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何存储将来可能发生变化的对象列表?

如何存储将来可能发生变化的对象列表?
EN

Software Engineering用户
提问于 2012-03-21 16:13:49
回答 4查看 4.1K关注 0票数 0

我拥有同一类的一组对象,它们的属性值不同。我需要从给定场景下的函数中找到这些对象中的最佳匹配。

将来,这些对象可能也会增加。

非常类似于我们在awt中使用Color类的方式。类中有一些带有diff rgb值的静态颜色对象。但是在我的例子中,我需要根据一定的标准从这些静态的颜色中选择合适的颜色。

所以,我应该将它们保存在arrayList或枚举中,还是将它们作为静态vars保存,就像在颜色的情况下一样。因为我需要对它们进行解析,并决定最佳匹配。所以我需要一些收藏品。但是在将来,如果我需要添加另一种类型,我将不得不修改类并为这个类添加另一个list.add(object)调用,然后它将违反开-关闭原则。我该怎么做呢?

编辑:更准确地说,我有大约7-8家分店,几年内much..may不会增加3到4,我需要一个函数来返回最近的餐厅,满足其他几个标准。

为此,我需要分析所有这些信息,以确定哪一个最适合客户。

EN

回答 4

Software Engineering用户

回答已采纳

发布于 2012-03-22 14:25:34

将商店存储在磁盘上。我建议使用数据库,但是对于少量的数据,xml也可以。在应用程序启动时,将此列表读入集合中。您不需要为每个用户创建常量,因为当您需要存储时,您只需要查询列表。这将使您不必仅仅为了添加一个新存储而更新您的代码。此外,由于您正在计算距离,您将需要一个所有邮政编码及其对应的纬度和经度的列表,以便计算两个邮政编码之间的距离。这也可以存储在磁盘上,很可能需要比存储列表更频繁地更新。此外,您可以创建一个管理控制台,使您可以添加新的存储和更新邮政编码,而不必手动写入您所选择的存储机制。

票数 2
EN

Software Engineering用户

发布于 2012-03-21 17:47:15

这真的取决于你有多少个物体,以及每个物体有多少个维度可以自由地移动。

为多维值找到最接近的匹配值有助于空间数据库和空间分区树(如k-d树 )。当然,如果您只有几十个对象,那么只检查它们也是一个选项。

我认为您对Color类的类比可能会使您稍微有点像(AFAIK),我不认为Color提供了任何最近的匹配功能,而且您可能需要保留RGB颜色空间来定义有用的距离度量

票数 3
EN

Software Engineering用户

发布于 2012-03-21 21:17:46

和ArrayList一起去。你可以自由修改它并快速搜索它。你不会违反开闭原则的。

例外情况:如果你有很多条目,比如说超过一百万条,并且你在80%+上运行,并且想要更快的速度,事情就会变得有趣起来。在这种情况下,如果您不小心,大型数组可能会对内存做一些奇怪的事情,而当您不注意的时候,ArrayList会做一些尴尬的事情。另外,如果你想找出列表中最接近于任意物体的对象--比如说,与RGB为233.121.55的物体最接近的颜色--你需要一个多维存储系统。比如四叉树,或者用颜色表示八叉树。(如果您的颜色有alpha组件,我想您需要一个十六进制树。)

但我敢打赌ArrayList对你来说会很好。您可以在眨眼之间扫描ArrayList中的10万个条目。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/140874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档