我需要在java中创建一个唯一集合的集合。有人可以建议可能的容器。
我希望有类似List<List<int>>
的内容,其中每个列表都可以根据其内容重复。
例如,如果说我的父列表的当前状态
[ [1,2,3], [3,4,5], [4,5,6] ]
如果我打算添加另一个列表[3,4,5]
,则不应该重复,也不应该添加。
List的contains()方法将使用整数,浮点数等,但我不确定它是否能匹配列表。
请建议任何其他可能有用的容器。
感谢。
答案 0 :(得分:3)
您可能最好使用Set<List<Integer>>
代替List<List<Integer>>
。
以上适用于您的示例:
Set<List<Integer>> uniqueLists = new HashSet<>();
uniqueLists.add(Arrays.asList(1, 2, 3));
uniqueLists.add(Arrays.asList(3, 4, 5));
uniqueLists.add(Arrays.asList(4, 5, 6));
// Now, this won't be added:
uniqueLists.add(Arrays.asList(3, 4, 5));
但是当你把一个集合放在一个集合中时要小心。在将它放入集合后,不应再次更改它。
答案 1 :(得分:2)
也许您有兴趣使用Set<Set<Integer>>
如果您想维护添加订单,可以使用LinkedHashSet
。
您的代码就像
Set<Set<Integer> uniqueLists = new LinkedHashSet<Set<Integer>>();
uniqueLists.add(new LinkedHashSet(Arrays.asList(1, 2, 3)));
使用Set<List<Integer>>
可以避免两个问题。
1)它将保留单个列表的添加顺序
2)单个列表也不会有重复的整数条目。