Целесообразно ли использовать hashset для данных, которые могут увеличиваться до тысяч строк?

#database #jakarta-ee #data-structures

#База данных #джакарта-ee #структуры данных

Вопрос:

Я поддерживаю старое веб-приложение J2EE и получаю жалобы на исправление его производительности. Проанализировав его архитектуру данных, я понял, что программист (ы) имеет хэш-наборы для хранения табличных значений, которые увеличиваются до тысяч строк. Учитывая то, что 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>();
  

Ответ №1:

Возможно, вам подойдет использование TreeSet. Это обеспечивает O (log (n)) производительность доступа.