[align=left][/align]
项目中使用到List的删除方法,因此总结一下List的三种删除方法.
方法1: remove(int index),参数是下标识,返回值是被删除的数据;删除之后下表随之变化.所以使用下标值的时候一定要考虑到删除数据下标值改变的情况.
参考下面的代码
List list = new ArrayList();
list.add(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
Object obj1 = list.remove(1); //remove(int index),参数是下标识,返回值是被删除的数据
System.err.println("obj1= "+obj1);
System.err.println("list ="+list);//得到的list是删除特定下标值的list
Object obj3 = list.remove(3); //remove(int index),参数是下标识,返回值是被删除的数据
System.err.println("obj3= "+obj3);
System.err.println("list ="+list);//得到的list是删除特定下标值的list
/*
* obj1= 1
list =[0, 2, 3, 4, 5, 6]
obj3= 4
list =[0, 2, 3, 5, 6]
* 表示删除数据后array的下标随之变化
*/
方法2:remove(Object obj),参数是list中保存的数据,返回值是是否删除成功true or false;数据在list中删除后返回true,如果数据不在list中,那么返回false.
这中情况不需要考虑下标值,但是需要知道确切的数据.
List list = new ArrayList();
list.add("0");
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
//remove(Object obj),参数是list中保存的数据,返回值是是否删除成功true or false
Object obj1 = list.remove("1");
System.err.println("obj1= "+obj1);
System.err.println("list ="+list);//得到的list是删除特定下标值的list
Object obj3 = list.remove("3");
System.err.println("obj3= "+obj3);
System.err.println("list ="+list);//得到的list是删除特定下标值的list
Object obj7 = list.remove("7");
System.err.println("obj7= "+obj7);
System.err.println("list ="+list);//得到的list是删除特定下标值的list
/*
obj1= true
list =[0, 2, 3, 4, 5, 6]
obj3= true
list =[0, 2, 4, 5, 6]
obj7= false
list =[0, 2, 4, 5, 6]
*/
方法3:removeAll(Collection c) 参数是collection,返回值是boolean类型.
如果c是list中的一部分,那么list将这部分数据删除掉;如果c中的数据只有一部分在list中,那么删除list中存在的这部分.可以用来取得两个list的合集;如果list中不存在c中的数据,那么返回false;如果c是不是list类型,那么无法删除.
List list = new ArrayList();
list.add(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
List list1 = new ArrayList();
list1.add(1);
list1.add(2);
list1.add(3);
List list2 = new ArrayList();
list2.add(9);
list2.add(2);
list2.add(3);
//list1中的数据在list中都存在
boolean flag = list.removeAll(list1);
System.err.println("list ="+list);
System.err.println(flag);
// list =[0, 4, 5, 6]
// true
//list2中数据list中只有一部分,那么只删除有的那部分,那么可以去掉1个集合中重合的一部分,
// boolean flag = list.removeAll(list2);
// System.err.println("list ="+list);
// System.err.println("list2 ="+list2);
// System.err.println(flag);
// list =[0, 1, 4, 5, 6]
// list2 =[9, 2, 3]
// true
// List list4 = new LinkedList();
// list4.add("1");
// list4.add("4");
// list4.add("6");
// boolean flag = list.removeAll(list4);
// System.err.println("list ="+list);
// System.err.println("list4 ="+list4);
// System.err.println(flag);
// list =[0, 1, 2, 3, 4, 5, 6]
// list4 =[1, 4, 6]
// false
项目中使用到List的删除方法,因此总结一下List的三种删除方法.
方法1: remove(int index),参数是下标识,返回值是被删除的数据;删除之后下表随之变化.所以使用下标值的时候一定要考虑到删除数据下标值改变的情况.
参考下面的代码
List list = new ArrayList();
list.add(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
Object obj1 = list.remove(1); //remove(int index),参数是下标识,返回值是被删除的数据
System.err.println("obj1= "+obj1);
System.err.println("list ="+list);//得到的list是删除特定下标值的list
Object obj3 = list.remove(3); //remove(int index),参数是下标识,返回值是被删除的数据
System.err.println("obj3= "+obj3);
System.err.println("list ="+list);//得到的list是删除特定下标值的list
/*
* obj1= 1
list =[0, 2, 3, 4, 5, 6]
obj3= 4
list =[0, 2, 3, 5, 6]
* 表示删除数据后array的下标随之变化
*/
方法2:remove(Object obj),参数是list中保存的数据,返回值是是否删除成功true or false;数据在list中删除后返回true,如果数据不在list中,那么返回false.
这中情况不需要考虑下标值,但是需要知道确切的数据.
List list = new ArrayList();
list.add("0");
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
//remove(Object obj),参数是list中保存的数据,返回值是是否删除成功true or false
Object obj1 = list.remove("1");
System.err.println("obj1= "+obj1);
System.err.println("list ="+list);//得到的list是删除特定下标值的list
Object obj3 = list.remove("3");
System.err.println("obj3= "+obj3);
System.err.println("list ="+list);//得到的list是删除特定下标值的list
Object obj7 = list.remove("7");
System.err.println("obj7= "+obj7);
System.err.println("list ="+list);//得到的list是删除特定下标值的list
/*
obj1= true
list =[0, 2, 3, 4, 5, 6]
obj3= true
list =[0, 2, 4, 5, 6]
obj7= false
list =[0, 2, 4, 5, 6]
*/
方法3:removeAll(Collection c) 参数是collection,返回值是boolean类型.
如果c是list中的一部分,那么list将这部分数据删除掉;如果c中的数据只有一部分在list中,那么删除list中存在的这部分.可以用来取得两个list的合集;如果list中不存在c中的数据,那么返回false;如果c是不是list类型,那么无法删除.
List list = new ArrayList();
list.add(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
List list1 = new ArrayList();
list1.add(1);
list1.add(2);
list1.add(3);
List list2 = new ArrayList();
list2.add(9);
list2.add(2);
list2.add(3);
//list1中的数据在list中都存在
boolean flag = list.removeAll(list1);
System.err.println("list ="+list);
System.err.println(flag);
// list =[0, 4, 5, 6]
// true
//list2中数据list中只有一部分,那么只删除有的那部分,那么可以去掉1个集合中重合的一部分,
// boolean flag = list.removeAll(list2);
// System.err.println("list ="+list);
// System.err.println("list2 ="+list2);
// System.err.println(flag);
// list =[0, 1, 4, 5, 6]
// list2 =[9, 2, 3]
// true
// List list4 = new LinkedList();
// list4.add("1");
// list4.add("4");
// list4.add("6");
// boolean flag = list.removeAll(list4);
// System.err.println("list ="+list);
// System.err.println("list4 ="+list4);
// System.err.println(flag);
// list =[0, 1, 2, 3, 4, 5, 6]
// list4 =[1, 4, 6]
// false