我需要一个 HashSet 实现,其中元素是一对整数,
例如。Set s = { {1,2} , {3,4} , {1,4}}
. 这里集合 s 有 3 个元素。
在许多情况下都需要这种两键 HashSet,例如,我的数据库中有一个关系,其中候选键是两列的组合。
是否有一些图书馆已经提供了这个?如果没有这样的实现,那么与其从头开始实现整个数据结构,那么在 Java 中扩展 HashSet 实现会更容易(和高效吗?)?
对于这个要求,我将创建一个具有 2 个整数作为属性的数据持有者,并提供 equals 和 hashcode 实现。然后将这些对象放入集合中。
将一个包含 2 个元素的数组作为集合的成员不是吗?IE:
Set<int[]> s = new HashSet<int[]>();
s.add(new int[] {1,2});
s.add(new int[] {3,4});
或者创建一个CandidateKey
有两个字段和一个自定义equals()
和hashCode()
方法的类?
综上所述,您确定要自己处理对象关系映射(从数据库到对象的映射),而不是使用 Hibernate 或 EclipseLink 之类的库吗?
在这种情况下,整数列表将起作用:
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
中。