我需要在Java中创建唯一集合的集合。有人可以建议使用相同的容器。
我想有一个类似List<List<int>>
的地方,其中每个列表都可以根据其内容进行重复。
例如,如果我当前的父列表状态为[ [1,2,3], [3,4,5], [4,5,6] ]
,如果我要添加另一个列表,例如[3,4,5]
,则不应重复,也不应添加。
List的contains()方法将使用整数,浮点数等,但我不确定它是否能够匹配列表。
请提出其他可能有用的容器。
谢谢。
您可能最好使用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));
不过,将集合放入集合中时要小心。将其放入集合中后,请勿再次更改。
也许您可能会想使用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)它的单个列表也将没有重复的整数条目。