我正在维护一个旧的J2EE Web应用程序,并且一直在抱怨修复它的性能。在分析它的数据架构时,我意识到程序员有/或者有散列集来存储增长到数千行的表值。考虑到java API关于hashset的内容我真的认为这是一个非常糟糕的主意,特别是当数据库表按某些属性排序时,所以这就是性能影响的来源,但我需要应用一些解决方案为了缓解这种性能损失,当我想到几个选项时,我想知道我是否可以使用一些需要较少计算来保存数据的其他数据结构。下面是要映射到数据库的其中一个类的摘录。请记住,还有另外12个成员,包括这里显示的内容:
/* Hibernate attribute mapping */
private Set<Supplier> suppliers = new HashSet<Supplier>();
private Set<Customer> customers = new HashSet<Customer>();
private Set<Tarif> tarif = new HashSet<Tarif>();
private Set<Contribution> contributions = new HashSet<Contribution>();
private Set<Premium> premiums = new HashSet<Premium>();
private Set<Alert> alerts = new HashSet<Alert>();
private Set<CustomerInvoice> customerInvoices = new HashSet<CustomerInvoice>();
private Set<Monitoring> monitorings = new HashSet<Monitoring>();
private Set<Criterions> criterions= new HashSet<Criterions>();
private Set<User> registeredUsers= new HashSet<User>();
private Set<Cost> costs= new HashSet<Cost>();
答案 0 :(得分:1)
使用TreeSet可能适合您。它提供O(log(n))访问性能。