Целесообразно ли использовать хэш-набор для данных, которые могут увеличиваться до тысяч строк? - PullRequest
0 голосов
/ 12 ноября 2011

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

1 голос
/ 12 ноября 2011

Использование TreeSet может быть правильным для вас. Он обеспечивает производительность доступа O (log (n)).

...