我需要在 java 中创建一个唯一集合的集合。有人可以建议可能的容器。
我想要一个类似的东西List<List<int>>
,每个列表都可以在其内容方面重复。
例如,如果我当前的父列表状态是 say
[ [1,2,3], [3,4,5], [4,5,6] ]
并且我打算添加另一个列表 say [3,4,5]
,它不应该被复制并且不应该被添加。
List 的 contains() 方法适用于整数、浮点数等,但我不确定它是否能够匹配列表。
请建议任何其他可以提供帮助的容器。
谢谢。
我需要在 java 中创建一个唯一集合的集合。有人可以建议可能的容器。
我想要一个类似的东西List<List<int>>
,每个列表都可以在其内容方面重复。
例如,如果我当前的父列表状态是 say
[ [1,2,3], [3,4,5], [4,5,6] ]
并且我打算添加另一个列表 say [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) 它的单个列表也不会有重复的整数条目。