java中唯一列表的列表

问题描述 投票:2回答:2

我需要在Java中创建唯一集合的集合。有人可以建议使用相同的容器。

我想有一个类似List<List<int>>的地方,其中每个列表都可以根据其内容进行重复。

例如,如果我当前的父列表状态为[ [1,2,3], [3,4,5], [4,5,6] ],如果我要添加另一个列表,例如[3,4,5],则不应重复,也不应添加。

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

请提出其他可能有用的容器。

谢谢。

java containers
2个回答
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));

不过,将集合放入集合中时要小心。将其放入集合中后,请勿再次更改。


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)它的单个列表也将没有重复的整数条目。

© www.soinside.com 2019 - 2024. All rights reserved.