list add set remove方法

1 add和set方法的区别

add(Object e)表示在当前list的末尾添加元素。

add(int index, Object element)表示在当前list的index索引增加元素,此索引之后的所有元素依次向后移动一位。

set(int index, Object element)表示替换当前list的index索引元素为element,此索引之后的所有元素索引不变。如下所示:


import java.util.ArrayList;
import java.util.List;


public class Test {

	public static void main(String args[]){
		List<Object> lst = new ArrayList<Object>();
//		lst.add(1,"aa");
		lst.add("aa");
		lst.add("bb");
		System.out.println("lst is :" + lst);
		lst.set(1, "cc");
		System.out.println("lst is :" + lst);
		lst.add(1, "dd");
		System.out.println("lst is :" + lst);
	}
}

运行结果:

lst is :[aa, bb]

lst is :[aa, cc]
lst is :[aa, dd, cc]


2 remove方法

remove(int index)表示删除list中的index索引的值,此索引之后的元素依次向前移动一位,即元素索引依次-1;

import java.util.ArrayList;
import java.util.List;


public class Test {

	public static void main(String args[]){
		List<Object> lst = new ArrayList<Object>();
//		lst.add(1,"aa");
		lst.add("aa");
		lst.add("bb");
		lst.set(1, "cc");
		lst.add(1, "dd");	
                System.out.println("lst is :" + lst);
		lst.remove(0);
		System.out.println("lst is :" + lst);
	}
}

运行结果如下:

lst is :[aa, dd, cc]
lst is :[dd, cc]



 

   import java.util.ArrayList;  
   import java.util.Iterator;  
   import java.util.List;  
      
    public class Test {  
      
        void init(List<Integer> list) {  
            list.clear();  
            for (int i = 0; i < 10; i++) {  
                list.add(i + 1);  
            }  
        }  
      
        void remove(List<Integer> list) {  
            for (int i = 0; i < 5; i++) {  
                list.remove(i);  
            }  
        }  
      
        void removeTwo(List<Integer> list) {  
            for (int i : list) {  
                if (i < 6) {  
                    list.remove(i);  
                }  
            }  
        }  
      
        void removeThree(List<Integer> list) {  
            for (Iterator<Integer> iter = list.iterator(); iter.hasNext();) {  
                int i = iter.next();  
                if (i < 6) {  
                    iter.remove();  
                }  
            }  
        }  
      
        public static void main(String[] args) {  
            Test testList = new Test();  
            List<Integer> list = new ArrayList<Integer>();  
      
            // 第一种方法  
            testList.init(list);  
            testList.remove(list);  
            System.out.println(list);  
      
            // 第二种方法  
            try {  
                testList.init(list);  
                testList.removeTwo(list);  
                System.out.println(list);  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
              
            // 第三种方法  
            testList.init(list);  
            testList.removeThree(list);  
            System.out.println(list);  
        }  
    }  


运行结果:

[2, 4, 6, 8, 10]

java.util.ConcurrentModificationException
    at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
    at java.util.AbstractList$Itr.next(AbstractList.java:343)
    at Test.removeTwo(Test.java:45)
    at Test.main(Test.java:73)

[6, 7, 8, 9, 10]


由上例子得知只有第三种方法才是我们想要的方法。

由于remove一个元素后下标发生了变化,因此第一种方法删除了其他的元素。

同时由于元素索引的变化,第二种方法报出了空指针。




第一种方法的改进方法如下:

    void remove(List<Integer> list) {  
        int num = list.size() - 5;  
        for (int i = 0; i < num; i++) {  
            list.remove(i);  
            i--;  
            num--;  
        }  
    }  













阅读更多
文章标签: java基础编程
个人分类: java基础编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

list add set remove方法

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭