比较集合内的集合
我有这样的一套:
Set<Set> NestedSet = new HashSet<Set>(); [[Node[0], Node[1], Node[2]], [Node[0], Node[2], Node[6]], [Node[3], Node[4], Node[5]]]
我想比较和合并嵌套集内的集合。 [0,1,2]和[0,2,6]具有共同的要素。 所以应该合并它们形成0,1,2,6。
输出应该是这样的:
[[Node[0], Node[1], Node[2], Node[6]], [Node[3], Node[4], Node[5]]]
有没有有效的方法?
您可以使用Collections.disjoint(Collection c1,Collection c2)来检查两个指定的集合没有共同的元素。
顺便说一下,确保你的Node
类实现了hashCode
和equals
Set> result = new HashSet>(); for (Set s1 : NestedSet) { Optional> findFirst = result.stream().filter(p -> !Collections.disjoint(s1, p)).findFirst(); if (findFirst.isPresent()){ findFirst.get().addAll(s1); } else { result.add(s1); } }