题目
已知一个List
list.add(“123”);
list.add(“1”);
list.add(“123456”);
list.add(“123”);
list.add(“124”);
从list中求出一个集合, 里面的元素彼此没有包含关系(去掉被包含的)
比如上面的元素123包含1, 那么取123; 123456包含123, 取123456
最后要的集合肯定只有两个元素, 就是123456和124
方案一:
思路: 迭代器拿到每一个元素, 然后for循环比较, 如果存在包含关系, 就将此元素去除掉.
List<String> list = new ArrayList<>();
list.add("123");
list.add("1");
list.add("123456");
list.add("123");
list.add("124");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String s = iterator.next();
for (int i = 0; i < list.size(); i++) {
if (list.indexOf(s) == i) {
continue;
}
if (list.get(i).contains(s)) {
iterator.remove();
break;
}
}
}
list.forEach(System.out::println);
注: 此方案是由一个群友提供