list集合的“移除”详解
一、remove返回值类型:有2种
1.string:返回删除的元素内容
参数类型为int,即元素的下标
List<String> list = new ArrayList<String>();
list.add("小李"); //0
list.add("小丽"); //1
list.add("小利"); //2
list.add("小黎"); //3
for (int i = 0; i < list.size(); i++) {
System.out.println("原集合:"+i+"---"+list.get(i));
}
String recon = list.remove(0);
System.out.println("被删除的元素:"+recon);
for (int i = 0; i < list.size(); i++) {
System.out.println("删除后:"+i+"---"+list.get(i));
}
删除下标为0的元素“小李”,返回值为删除的元素“小李”
2.boolean类型:表示是否删除成功
参数类型为object,即元素的内容
List<String> list = new ArrayList<String>();
list.add("小李"); //0
list.add("小丽"); //1
list.add("小利"); //2
list.add("小黎"); //3
for (int i = 0; i < list.size(); i++) {
System.out.println("原集合:"+i+"---"+list.get(i));
}
boolean remove = list.remove("小黎");
System.out.println("删除元素的结果:"+remove);
for (int i = 0; i < list.size(); i++) {
System.out.println("删除后:"+i+"---"+list.get(i));
}
删除内容为“小黎”的元素,由控制台可知删除成功,即与返回值为“true”匹配
二、remove详解
1.参数类型
(1)int类型:根据元素下标删除
List<String> list = new ArrayList<String>();
list.add("小李"); //0
list.add("小丽"); //1
for (int i = 0; i < list.size(); i++) {
System.out.println("原集合:"+i+"---"+list.get(i));
}
list.remove(0);//根据下标删除
for (int i = 0; i < list.size(); i++) {
System.out.println("删除后:"+i+"---"+list.get(i));
}
删除下标为0的元素
(2)Object类型内容:根据元素内容删除
List<String> list = new ArrayList<String>();
list.add("小李"); //0
list.add("小丽"); //1
for (int i = 0; i < list.size(); i++) {
System.out.println("原集合:"+i+"---"+list.get(i));
}
list.remove("小丽");//根据内容删除
for (int i = 0; i < list.size(); i++) {
System.out.println("删除后:"+i+"---"+list.get(i));
}
删除内容为“小丽”的元素
2.元素自动补位
当删除中间某一元素时,后面的元素会自动向前补位
List<String> list = new ArrayList<String>();
list.add(0,"小李"); //0
list.add(1,"小丽"); //1
list.add(2,"小利"); //2
list.add(3,"小黎"); //3
list.add(4,"小栗"); //4
for (int i = 0; i < list.size(); i++) {
System.out.println("原集合:"+i+"---"+list.get(i));
}
list.remove(3);//删除下标为3的元素
for (int i = 0; i < list.size(); i++) {
System.out.println("删除后:"+i+"---"+list.get(i));
}
当下标为3的元素被删除时,下标为4的元素会变成下标为3的元素,依次类推
3.删除的元素不存在
当删除的元素不存在集合时,不会报错
List<String> list = new ArrayList<String>();
list.add("小李"); //0
list.add("小丽"); //1
for (int i = 0; i < list.size(); i++) {
System.out.println("原集合:"+i+"---"+list.get(i));
}
list.remove("小栗");//内容不存在时
for (int i = 0; i < list.size(); i++) {
System.out.println("删除后:"+i+"---"+list.get(i));
}
boolean remove = list.remove("小栗");//内容不存在时
System.out.println("删除结果:"+remove);
表面看好像被删除了,其实并没有,只是元素本不存在
4.内容与下标一样
当元素的内容与下标一样时,如何得知是根据下标删除还是内容删除?如remove(2)
看参数类型
(1)int类型:移除下标为2的元素
List<String> list = new ArrayList<String>();
list.add("1"); //0
list.add("2"); //1
list.add("3"); //1
for (int i = 0; i < list.size(); i++) {
System.out.println("原集合:"+i+"---"+list.get(i));
}
list.remove(2);
for (int i = 0; i < list.size(); i++) {
System.out.println("删除后:"+i+"---"+list.get(i));
}
(2)其他类型:移除的是内容为2的元素
List<String> list = new ArrayList<String>();
list.add("1"); //0
list.add("2"); //1
list.add("3"); //1
for (int i = 0; i < list.size(); i++) {
System.out.println("原集合:"+i+"---"+list.get(i));
}
list.remove("2");
for (int i = 0; i < list.size(); i++) {
System.out.println("删除后:"+i+"---"+list.get(i));
}
三、removeAll详解
删除所有元素
List<String> list = new ArrayList<String>();
list.add("1"); //0
list.add("2"); //1
list.add("3"); //1
for (int i = 0; i < list.size(); i++) {
System.out.println("原集合:"+i+"---"+list.get(i));
}
boolean removeAll = list.removeAll(list);
System.out.println("删除结果:"+removeAll);
System.out.println("删除后:"+list);
返回值为boolean类型(执行操作时可不写返回值类型)
list中add、set方法详解