List集合的子实现类的特点:

ArrayList:
底层数据结构是数组的形式,满足数组结构的特点:查询快,增删慢
从线程安全问题来看:线程不安全的,不同步,执行效率高

Vector:
底层数据结构是数组的形式,查询快,增删慢
从线程角度看:线程安全的类,同步,执行效率低
LinkedList:
底层数据结构是链接列表,特点:查询慢,增删快
从线程角度看:线程不安全的一个类,不同步,执行效率高

如果实现多线程程序,一般要是安全的类:
                StringBuffer,Vector<E>,hashtable<K,V>

                synchronized(同步锁对象){
                    代码;
                }

    如果在一般的需求中没有指明使用集合去完成,都默认采用ArrayList
    如果需求中要考虑线程安全,那么使用Vector集合!

        笔试过程中,一些需求用到集合:就是用ArrayList

ArrayList类:

//创建ArrayList集合对象
        ArrayList array = new ArrayList() ;

        //创建几个学生对象
        Student s1 = new Student("高圆圆", 27) ;
        Student s2 = new Student("唐嫣", 25) ;
        Student s3 = new Student("邓超", 29) ;
        Student s4 = new Student("黄晓明", 28) ;

        //给集合添加元素
        array.add(s1) ;
        array.add(s2) ;
        array.add(s3) ;
        array.add(s4) ;



        //获取迭代器并遍历
        Iterator it = array.iterator() ;
        while(it.hasNext()){
    //java.lang.ClassCastException: org.westos_01.Student cannot be cast to java.lang.String
//          String s = (String)it.next() ;
            Student s = (Student) it.next() ;
            System.out.println(s);
            //迭代器后期被增强for循环替代

ArrayList 遍历寻不相等元素时,contain的底层代码依赖equal,默认比较地址值,需要重写equal方法,遍历需获迭代器对象。


Vector:
底层数据结构是数组的形式,查询快,增删慢
从线程角度看:线程安全的类,同步,执行效率低

特有功能:

        public void addElement(E obj)------->相当于:add(Object e)

        public Enumeration<E> elements()----->相当于:Iterator iterator() ;


        Enumeration<E>接口:向量的组件枚举有两个方法
                boolean hasMoreElements():------>相当于:hasNext()
                Object nextElement():----------->相当于:next();
package Day14_Vector;

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

/**
 * @author Aoman_Hao
 */
public class Demo {

    public static void main(String[] args) {
        //创建对象
        Vector<Object> v = new Vector<>();

        //添加元素
        v.addElement("TZRRY");
        v.addElement("T_T");
        v.addElement("Aoman");

        //public Enumeration<E> elements()
        //----->相当于:Iterator iterator() ;
        Enumeration<Object> elements = v.elements();

        //遍历
        /**
        boolean hasMoreElements():------>相当于:hasNext()
        Object nextElement():----------->相当于:next();
         */

        while(elements.hasMoreElements()){
            String next = (String) elements.nextElement();
            System.out.println(next);
        }
    }

}

LinkedList:
底层数据结构是链接列表,特点:查询慢,增删快
从线程角度看:线程不安全的一个类,不同步,执行效率高

特有功能:
添加功能:
public void addFirst(E e)将指定元素插入此列表的开头。
public void addLast(E e)将指定元素添加到此列表的结尾。
获取功能:
public Object getFirst()返回此列表的第一个元素
public Object getLast()返回此列表的最后一个元素。
删除功能:
public Object removeFirst()移除并返回此列表的第一个元素。
public Object removeLast()移除并返回此列表的最后一个元素。

package Day14_LinkedList;

import java.util.LinkedList;

/**
 * @author Aoman_Hao
 */
public class Demo {

    public static void main(String[] args) {
        LinkedList<Object> l = new LinkedList<>();
        //添加
        l.add("1TZRRY");
        l.add("2TZR");
        l.add("3Aoman");
        //添加元素在首或尾处
        l.addFirst("AAA");
        l.addLast("DDD");
        System.out.println(l);
        //移除并返回元素
        l.removeFirst();
        System.out.println(l);
        //获取第一个元素
        System.out.println(l.getFirst());
    }

}