2

我需要在 java 中创建一个唯一集合的集合。有人可以建议可能的容器。

我想要一个类似的东西List<List<int>>,每个列表都可以在其内容方面重复。

例如,如果我当前的父列表状态是 say [ [1,2,3], [3,4,5], [4,5,6] ]并且我打算添加另一个列表 say [3,4,5],它不应该被复制并且不应该被添加。

List 的 contains() 方法适用于整数、浮点数等,但我不确定它是否能够匹配列表。

请建议任何其他可以提供帮助的容器。

谢谢。

4

2 回答 2

4

你可能最好使用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));

但是,当您将集合放入集合时要小心。将其放入集合后,您不应再次更改它。

于 2012-04-06T09:10:09.183 回答
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) 它的单个列表也不会有重复的整数条目。

于 2012-04-06T09:36:42.983 回答