List类及其方法

仅供个人学习,如有侵权请联系删除。

List集合的特有功能概述
    * void add(int index,E element)
    * E remove(int index)
    * E get(int index)
    * E set(int index,E element)

		public static void main(String[] args) {
		demo1();
		//demo2();
		//demo3();
		//demo4();
		//demo5();
	}

	public static void demo5() {
		List list = new ArrayList();	
		//通常用的是ArrayList list = new ArrayList();,此时仅仅为了使用List类中的方法
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		
		list.set(1, "z");						//将指定位置的元素修改
		System.out.println(list);
	}
	//[a, z, c, d]
	
	public static void demo4() {
		List list = new ArrayList();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		
		//Object obj1 = list.get(2);
		//System.out.println(obj1);
		//通过索引遍历List集合
		for(int i = 0;i < list.size(); i++) {
			System.out.println(list.get(i));
		}
	}
    /*
    a
    b
    c
    d
    */
	
	public static void demo3() {
		List list = new ArrayList();
		list.add(111);
		list.add(222);
		list.add(333);
		
		list.remove(111);							
		//这里会报错。删除的时候不会自动装箱,把111当作索引,只要传入的是整数,就把其当做索引
		System.out.println(list);
	}

	public static void demo2() {
		List list = new ArrayList();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		
		Object obj = list.remove(1);				//通过索引删除元素,将被删除的元素返回
		System.out.println(obj);
		System.out.println(list);
	}
    /*
    b
    [a, c, d]
    */
	
	public static void demo1() {
		List list = new ArrayList();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		list.add(4, "f");						//index<=size并且index>=0都不会报异常
		//list.add(1,"e");
		//list.add(10, "z");					//java.lang.IndexOutOfBoundsException,当存储时使用不存在的索引时
		System.out.println(list);
	}
	//[a, b, c, d, f]

 

       向List集合中存储学生对象
       通过size()和get()方法结合使用遍历

public static void main(String[] args) {
		List list = new ArrayList();
		list.add(new Student("张三", 23));					//Object obj = new Student("张三",23);
		list.add(new Student("李四", 24));
		list.add(new Student("王五", 25));
		list.add(new Student("赵六", 26));
		
		for(int i = 0; i < list.size(); i++) {
			//System.out.println(list.get(i));	 			//通过索引获取每一个元素
			Student s = (Student)list.get(i);
			System.out.println(s.getName() + "..." + s.getAge());
		}
	}
/*
张三...23
李四...24
王五...25
赵六...26
*/

 

     需求:我有一个集合,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。

public static void main(String[] args) {
		List list = new ArrayList();
		list.add("a");									//Object obj = new String();
		list.add("b");
		list.add("world");
		list.add("c");
		list.add("d");
		list.add("e");
		
		/*Iterator it = list.iterator();					//获取迭代器
		while(it.hasNext()) {							//判断集合中是否有元素
			String str = (String)it.next();				//向下转型
			if("world".equals(str)) {
				list.add("javaee");						
            //遍历的同时在增加元素,并发修改ConcurrentModificationException
			}
		}*/
        /*这个方法会报错,获取迭代器的过程中,迭代器自己知道有多少个元素,但是中途又添加了一个元素,而迭代器中的个数没有增加,此刻就会报错。解决方案:
    迭代器迭代元素,迭代器修改元素(ListIterator的特有功能add)
    集合遍历元素,集合修改元素
    需要用到下面的listIterator而非iterator的add方法*/
		
		ListIterator lit = list.listIterator();			//获取迭代器(List集合特有的)
		while(lit.hasNext()) {
			String str = (String)lit.next();			//向下转型
			if("world".equals(str)) {
				//list.add("javaee");						
            //遍历的同时在增加元素,并发修改ConcurrentModificationException
				lit.add("javaee");
			}
		}
		
		System.out.println(list);
	}

 

  boolean hasNext()是否有下一个
  boolean hasPrevious()是否有前一个
  Object next()返回下一个元素
  Object previous();返回上一个元素

* 数组
    * 查询快修改也快
    * 增删慢
* 链表
    * 查询慢,修改也慢
    * 增删快

集合框架(List的三个子类的特点)
* List的三个子类的特点

        ArrayList:
            底层数据结构是数组,查询快,增删慢。
            线程不安全,效率高。
        Vector:
            底层数据结构是数组,查询快,增删慢。
            线程安全,效率低。
        Vector相对ArrayList查询慢(线程安全的)
        Vector相对LinkedList增删慢(数组结构)
        LinkedList:
            底层数据结构是链表,查询慢,增删快。
            线程不安全,效率高。

        Vector和ArrayList的区别
            Vector是线程安全的,效率低
            ArrayList是线程不安全的,效率高
        共同点:都是数组实现的
        ArrayList和LinkedList的区别
            ArrayList底层是数组结果,查询和修改快
            LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢
        共同点:都是线程不安全的
* List有三个儿子,我们到底使用谁呢?
        查询多用ArrayList
        增删多用LinkedList
        如果都多ArrayList

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值