两个关键HashSet?

时间:2010-04-10 10:12:02

标签: java hashset

我需要一个HashSet实现,其中元素是一对整数
例如。 Set s = { {1,2} , {3,4} , {1,4}}。这里的集合有3个元素。

在很多情况下需要这种两个关键HashSet,例如,我的数据库中有一个关系,其中候选键是两列的组合。
有没有一些图书馆已经提供了这个? 如果没有这样的实现可用,那么从头开始实现整个数据结构,是否更容易(并且有效?)在Java中扩展HashSet实现?

3 个答案:

答案 0 :(得分:8)

对于这个要求,我将创建一个包含2个整数作为属性的数据持有者,并提供equals和hashcode实现。然后将这些对象放在Set中。

答案 1 :(得分:1)

将一个包含2个元素的数组作为集合的成员,它不会起作用吗?即:

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

或创建一个包含两个字段和自定义CandidateKeyequals()方法的课程hashCode()

总而言之,您确定要自己处理对象关系映射(从数据库到对象的映射),而不是使用像Hibernate或EclipseLink这样的库吗?

答案 2 :(得分:0)

在这种情况下,整数列表将起作用:

Set<List<Integer>> s = new HashSet<List<Integer>>();
s.add((List<Integer>)Arrays.asList(new Integer[] {2,4}));
s.add((List<Integer>)Arrays.asList(new Integer[] {2,4}));
s.add((List<Integer>)Arrays.asList(new Integer[] {2,5}));

hashCode() and equals()帮助器内置在ArrayList类中。