我正在开发一个需要大量内存对象的应用程序。最大的结构之一是
Map<String,Set<OwnObject>> (with Set as HashSet)
OwnObject 是表示数据库中记录的重量级对象。该应用程序可以工作,但具有相当大的内存占用。阅读2001 年的 Java 专家时事通讯,我分析了上述大型结构的内存使用情况。HashSet 在后面使用了一个 HashMap,它又是一个相当重量级的对象,我想这是我大部分额外内存的去向。
为了优化结构的内存使用,我尝试了多个版本:
Map<String,List<OwnObject>> (with List as ArrayList)
Map<String,OwnObject[]>
两者都有效,并且都比使用 Set<> 的版本更精简。但是,我想保留 Set 合同(条目的唯一性)。
一种方法是自己实现逻辑。我可以扩展 ArrayList 并确保 add() 中的合同。
是否有实现轻量级集合的框架来遵守 Set 契约?还是我错过了 Java 集合中的一些东西,我可以在不确保自己唯一性的情况下使用这些东西?