我需要一个HashSet实现,其中元素是一对整数
例如。 Set s = { {1,2} , {3,4} , {1,4}}
。这里的集合有3个元素。
在很多情况下需要这种两个关键HashSet,例如,我的数据库中有一个关系,其中候选键是两列的组合。
有没有一些图书馆已经提供了这个?
如果没有这样的实现可用,那么从头开始实现整个数据结构,是否更容易(并且有效?)在Java中扩展HashSet实现?
答案 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});
或创建一个包含两个字段和自定义CandidateKey
和equals()
方法的课程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
类中。