叨逼叨两句

  1. 如果现在让你心情惆怅的事,能在你踏实的行动下解决,那你的惆怅是不是在浪费时间?
  2. 语言的力量,往往让人能够画地为牢,所以千万不要说写听任何使自己觉得自己不行的话,防止自证预言把自己带进沟里。
  3. 当然,也不能就完全脱离现实规律,楼得一阶一阶上,事得一件一件干。

15-11:并发修改异常产生的原因及解决方案

这个视频再看一遍【15-11】

package com.test.regex;

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

public class Demo23 {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("a");
        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");                
                //并发修改异常,java.util.ConcurrentModificationException
                //list使用迭代器Iterator时,不能用自己的方法去添加元素
            }
        }*/
        
        ListIterator lit = list.listIterator();  //使用这个List特有的迭代器可解决这个问题
        while(lit.hasNext()){
            String str = (String) lit.next();
            if("world".equals(str)){
            //    list.add("javaee"); //光使用ListIterator这个迭代器是不够的,还得使用它的方法
                lit.add("javaee");
            }
        }
        System.out.println(list);
        
    }
}

15-12:ListIterator

package com.test.regex;

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

public class Demo23 {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("a");
        list.add("b");
        list.add("world");
        list.add("c");
        list.add("d");
        list.add("e");
        
        ListIterator lit = list.listIterator();
        while(lit.hasNext()){
            System.out.println(lit.next());    //获取指针,并将指针向后移动
        }
        
        System.out.println("----------------------------");
        
        while(lit.hasPrevious()){
            System.out.println(lit.previous());        //获取指针,并将指针向前移动
        }
        
    }
}

15-13:Vector

这个类基本被ArrayList取代了

package com.test.regex;

import java.util.Enumeration;
import java.util.Vector;

public class Demo24 {
    public static void main(String[] args) {
        Vector v = new Vector();
        v.addElement("a");
        v.addElement("b");
        v.addElement("c");
        v.addElement("d");
    
        Enumeration en = v.elements();        //获取枚举
        while(en.hasMoreElements()){            //判断集合中是否有元素
            System.out.println(en.nextElement());            //获取集合中的元素
        }
        
    }
}

15-14:数据结构之数组和链表【再看一遍视频】

  1. 数组:查询快、增删慢
    1
  2. 链表:查询慢、增删快
    2

15-15:List三个子类特点

特点

  1. ArrayList

    1. 底层数据结构——数组
    2. 线程不安全、效率高
  2. LinkedList

    1. 底层数据结构——链表
    2. 线程不安全、效率高
  3. Vector

    1. 底层数据结构——数组
    2. 线程安全、效率低

Vector相对ArrayList查询慢(线程安全)
Vector相对LinkList增删慢(数组结构)

应用选择

  1. 查询多用ArrayList
  2. 增删多用LinkList
  3. 如果都多用ArrayList

Wall_Breaker
2.1k 声望1.2k 粉丝

生死之间,就是我的跃迁之路,全程记录,欢迎见证