谁可以告诉我为什么代码这样写,最终list没有被替换掉public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("f");
list.add("e");
list.add("f");
System.out.println(list);
Set<String> set = new HashSet<>();
set.addAll(list);
System.out.println(set);
list.retainAll(set);
System.out.println(list);
}
}
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("f");
list.add("e");
list.add("f");
System.out.println(list);
Set<String> set = new HashSet<>();
set.addAll(list);
System.out.println(set);
list.retainAll(set);
System.out.println(list);
}
}
好像我测试的结果是一样的哦
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("f");
list.add("e");
list.add("f");
System.out.println(list);
Set<String> set = new HashSet<String>();
set.add("a");
set.add("b");
set.add("c");
set.add("f");
set.add("e");
//set.addAll(list);
System.out.println(set);
list.retainAll(set);
System.out.println(list);
}这个结果是:
[a, b, c, f, e, f]
[f, e, b, c, a]
[a, b, c, f, e, f]
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("f");
list.add("e");
list.add("f");
System.out.println(list);
Set<String> set = new HashSet<String>();
// set.add("a");
// set.add("b");
// set.add("c");
// set.add("f");
// set.add("e");
set.addAll(list);
System.out.println(set);
list.retainAll(set);
System.out.println(list);
}这个结果是:
[a, b, c, f, e, f]
[f, e, b, c, a]
[a, b, c, f, e, f]
好像我测试的结果是一样的哦结果是一样的呀
这句代码将list中的元素全部添加进set,而这个过程中会自动将相同元素只保留一个
list.retainAll(set);
看看API中对于retainAll的解释:仅保留此列表中包含在指定集合中的元素。 换句话说,从此列表中删除其中不包含在指定集合中的所有元素。
也就是说list还是[a, b, c, f, e, f],set是[a, b, c, e, f];现在从list中删除不在set中的所有元素,结果显然,没有,所以该函数返回值为false
boolean al = list.retainAll(set);
System.out.println(al);亲测