怎么使用Java List等集合类的removeAll方法
1个回答
2016-02-01 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
java list集合中的removeAll方法的使用:
首先看看jdk中的定义:
public boolean removeAll(Collection<?> c) {
boolean modified = false;
Iterator<?> it = iterator();
while (it.hasNext()) {
if (c.contains(it.next())) {
it.remove();
modified = true;
}
}
return modified;
}
public boolean remove(Object o) {
Iterator<E> it = iterator();
if (o==null) {
while (it.hasNext()) {
if (it.next()==null) {
it.remove();
return true;
}
}
} else {
while (it.hasNext()) {
if (o.equals(it.next())) {
it.remove();
return true;
}
}
}
return false;
}
可以看到在调用removeAll方法时,实际上是循环调用了remove方法,而remove方法中有一段关键的代码:if (o.equals(it.next())) !
举例:
import java.util.ArrayList;
import java.util.List;
public class UserList {
private List<User> subList;
private List<User> allList;
public UserList(){
subList=new ArrayList<User>();
allList=new ArrayList<User>();
for(int i=0;i<3;i++){
User user=new User();
user.setAge(i);
user.setName("lyh"+i);
subList.add(user);
}
for(int i=0;i<10;i++){
User user=new User();
user.setAge(i);
user.setName("lyh"+i);
allList.add(user);
}
}
public static void main(String[] args){
UserList userList=new UserList();
userList.allList.removeAll(userList.subList);//调用removeAll方法
System.out.println(userList.allList.size());
}
}
实际结果:
结果是10
首先看看jdk中的定义:
public boolean removeAll(Collection<?> c) {
boolean modified = false;
Iterator<?> it = iterator();
while (it.hasNext()) {
if (c.contains(it.next())) {
it.remove();
modified = true;
}
}
return modified;
}
public boolean remove(Object o) {
Iterator<E> it = iterator();
if (o==null) {
while (it.hasNext()) {
if (it.next()==null) {
it.remove();
return true;
}
}
} else {
while (it.hasNext()) {
if (o.equals(it.next())) {
it.remove();
return true;
}
}
}
return false;
}
可以看到在调用removeAll方法时,实际上是循环调用了remove方法,而remove方法中有一段关键的代码:if (o.equals(it.next())) !
举例:
import java.util.ArrayList;
import java.util.List;
public class UserList {
private List<User> subList;
private List<User> allList;
public UserList(){
subList=new ArrayList<User>();
allList=new ArrayList<User>();
for(int i=0;i<3;i++){
User user=new User();
user.setAge(i);
user.setName("lyh"+i);
subList.add(user);
}
for(int i=0;i<10;i++){
User user=new User();
user.setAge(i);
user.setName("lyh"+i);
allList.add(user);
}
}
public static void main(String[] args){
UserList userList=new UserList();
userList.allList.removeAll(userList.subList);//调用removeAll方法
System.out.println(userList.allList.size());
}
}
实际结果:
结果是10
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询