我创建了两个Integer的ArrayList。 List1包含[1,2,2,2,5],List2包含[2]。我尝试过List1.removeAll(List2)应该只从List1中删除2,而不是从List1中删除所有出现的2。 此外,List1.remove(List2)根本不起作用。
sendTwitterRequest:completion:
答案 0 :(得分:2)
我尝试过List1.removeAll(List2)应该只从List1删除2次,而不是从List1中删除所有出现的2
没有。 List1.removeAll(List2)删除所有出现的List2(来自List1),因为它是documented要执行的操作:
boolean removeAll(Collection c)
从此列表中删除指定集合中包含的所有元素(可选操作)。
如果您只想删除第一个元素,则应该使用List.remove(object)。以下是来自doc的参考:
boolean remove(Object o)
从此列表中删除第一次出现的指定元素(如果存在)(可选操作)。如果此列表不包含该元素,则不会更改。
答案 1 :(得分:1)
如果要删除第一个匹配项,则需要List.remove(Object)
(如链接的Javadoc中所述)。 List.removeAll(Collection<?>)
删除所有匹配项。您还可以使用IntStream
构建List
(s),并使用List
(而不是特定的 ArrayList
实施)。像,
List<Integer> list1 = IntStream.of(2, 5, 1, 2, 2).boxed().collect(Collectors.toList());
Collections.sort(list1);
System.out.println(list1);
List<Integer> list2 = IntStream.of(2).boxed().collect(Collectors.toList());
for (Integer v : list2) {
list1.remove(v);
}
System.out.println(list1);
哪个输出
[1, 2, 2, 2, 5]
[1, 2, 2, 5]