如题。list里面也是list。怎么能够将有交集的list取出来。例如 [1,2,3,6],[2,3,4][3,6],[4,5]
这样子,最后取出来的是[1,2,3,6],[2,3,4],[4,5],而[3,6] 是被包含在[1,2,3,6]中的,就排出。
package number3;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class Tree1 {
//这是一个测试类
public static void main(String[] args) {
test();
}
//任务类
public static void test(){
List<List<Integer>> result = new LinkedList<>();
result.add(new LinkedList<>(Arrays.asList(1, 2, 3, 6)));
result.add(new LinkedList<>(Arrays.asList(2, 3, 4)));
result.add(new LinkedList<>(Arrays.asList(3, 6)));
result.add(new LinkedList<>(Arrays.asList(4, 5)));
int sub[] = new int[result.size()];//一开始元素全部是0,用来标记
for (int i = 0; i < result.size(); i++) {
List<Integer> item = result.get(i);//有点类似那种二维数组,就是二维数组的元素是一个一维数组元素
for (int k = i + 1; k < result.size(); k++) {
List<Integer> OtherItem = result.get(k);
if (sub[k]!=1 && item.containsAll(OtherItem)) {//boolean contains(Object o) 如果此列表包含指定元素,则返回 true。
sub[k] = 1;
} else if (sub[i]!=1 && OtherItem.containsAll(item)) {
sub[i] = 1;
}
}
}
// 移除标记的元素
for (int i = sub.length - 1; i > 0; i--) {
if (sub[i] == 1) {
result.remove(i);
}
}
for (int i = 0; i < result.size(); i++) {
System.out.println(Arrays.toString(result.get(i).toArray()));
}
}
}