list add set remove方法

原创 2017年03月09日 20:26:43

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里的Arrays.asList不能用add和remove方法?

在平时的开发过程中,我们知道可以将一个Array的对象转化为List。这样的操作,我们只要采用Arrays.asList这个方法就行了。笔者前段时间一直用这个方法,有一天,我发现通过Arrays.as...
  • loveaborn
  • loveaborn
  • 2014年10月03日 10:27
  • 11765

Java进阶(二十四)Java List集合add与set方法原理简介

Java List集合add与set方法原理简介 add方法 add方法用于向集合列表中添加对象。 语法1 用于在列表的尾部插入指定元素。如果List集合对象由于调用add方法而发生更改,则返...
  • sunhuaqiang1
  • sunhuaqiang1
  • 2016年03月19日 14:57
  • 47403

Kotlin最简单的入门教程——集合

集合Kotlin 区分可变集合和不可变集合(lists、sets、maps 等)Kotlin 的 List 类型是一个提供只读操作如 size、get等的接口。和 Java 类似,它继承自 Colle...
  • handongyu2011
  • handongyu2011
  • 2017年06月15日 10:47
  • 1367

数据结构之解析ArrayList源码的add,remove,set,contains

ArrayList的源码的几个重要函数解析 首先,ArrayList内部其实就是一个Object数组构成的addadd(E object) @Override public boolean ad...
  • Fourlm
  • Fourlm
  • 2016年10月11日 15:08
  • 232

HTML/JavaScript - Select list - Add/Remove Options (DOM)

select, options, insert, remove, append last, remove last Using a technique that works in DOM com...
  • jimmy2248
  • jimmy2248
  • 2011年11月15日 17:20
  • 592

Java 数组转换成List,然后执行add或remove抛异常UnsupportedOperationException问题的解决

在使用Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。这是由于Arrays.asLis...
  • Fanpei_moukoy
  • Fanpei_moukoy
  • 2016年09月11日 16:19
  • 658

List集合中的add和remove的问题

这是一个刷新三观的问题:是的,你没有看错,list竟然不支持remove方法,那么这是为什么呢???原因在于:1、上述代码中Arrays.asList(strings)返回的list并不是我们所认知的...
  • tuesdayma
  • tuesdayma
  • 2017年11月22日 22:35
  • 97

[LeetCode]Add Binary&Climbing Stairs&Remove Duplicates from Sorted List

今天写得蛮快的,来个三连发。Add Binary Given two binary strings, return their sum (also a binary string). F...
  • madrishing
  • madrishing
  • 2015年11月18日 13:33
  • 235

leetcode题解-82. Remove Duplicates from Sorted List II && 445. Add Two Numbers II

82, 题目:Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distin...
  • liuchonge
  • liuchonge
  • 2017年07月15日 12:06
  • 721

(日常打卡)自定义的一个模仿ArrayList的类, 你需要实现其中的add, get, remove , 等方法

问题:来源于码农翻身公众号 也不知道可以不,看看就好hhhhh /** * 自定义的一个模仿ArrayList的类, 你需要实现其中的add, get, remove , 等方法 * @aut...
  • plotu_charon
  • plotu_charon
  • 2017年06月15日 10:40
  • 212
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:list add set remove方法
举报原因:
原因补充:

(最多只允许输入30个字)