Два ключевых хэш-набора? - PullRequest
       12

Два ключевых хэш-набора?

4 голосов
/ 10 апреля 2010

Мне нужна реализация HashSet, в которой элементы являются парой целых чисел
например. Set s = { {1,2} , {3,4} , {1,4}}. Здесь множество s имеет 3 элемента.

Этот тип двух ключей HashSet необходим во многих ситуациях, например, в моей базе данных есть отношение, где ключ-кандидат представляет собой комбинацию из двух столбцов.
Есть ли какая-нибудь библиотека, которая уже обеспечивает это? Если такая реализация недоступна, то вместо того, чтобы реализовывать всю структуру данных с нуля, будет ли проще (и эффективнее?) Расширить реализацию HashSet в Java?

Ответы [ 2 ]

8 голосов
/ 10 апреля 2010

Для этого требования я бы создал держатель данных с двумя целыми числами в качестве атрибутов и предоставил бы равенства и реализации хэш-кода. Затем поместите эти объекты в набор.

1 голос
/ 10 апреля 2010

И не сработает ли поместить массив с 2 элементами в качестве члена набора? I.e.:

Set<int[]> s = new HashSet<int[]>();
s.add(new int[] {1,2});
s.add(new int[] {3,4});

или создать класс CandidateKey, который имеет два поля и пользовательские методы equals() и hashCode()?

При всем этом вы уверены, что хотите самостоятельно обрабатывать объектно-реляционное отображение (отображение из базы данных в объекты) вместо использования библиотеки, такой как Hibernate или EclipseLink?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...