java常用数据结构list底层源码详解

java常用数据结构list底层源码详解_第1张图片

先上一张图

因为比较烧脑 set 和 map 下次在写 详情请关注我的博客 从我的博客里找下一篇。。

package com.kero99.ygc.data;

import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.NavigableMap;
import java.util.Set;
import java.util.Stack;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable;

public class Data3 {
    /**
     * list继承Collection
     * Collection继承Iterable
     * list接口定义了所有list需要那些功能 
     * ArrayList实现了list的一些方法
     * abstractList定义了一些公共的实现
     * list是一个接口 三个类的实现方式不同ArrayList 动态数组 LinkedList 链表 Vector 动态数组
     *  
     * 疑问1.这里有个疑问为何继承抽象类abstractList,不是已经实现list接口了吗?
     * 作者明显是要复用abstractList里的公共的实现,所以ArrayList继承abstractList
     * 这样ArrayList在用不同的方式实现。
     * 
     * 疑问2.为何list继承重写 Collection的方法,ArrayList不直接实现Collection
     * 因为list有一些独有的方法如subList(慎用..原因请百度..)set也会继承collection
     * 这样写还可以提高可读性和可扩展性
     * ----------------------------------------------------------
     * 四种不同的实现方式通过源码分析可以得出
     * ArrayList 动态数组有序集合 线程不安全 查询速度快 增删慢  
     * LinkedList 链表 线程不安全 删除插入速度快     查询慢
     * Vector 实现动态数组 线程安全 速度没有ArrayList快 因为有同步 支持null元素 有顺序;元素可以重复
     * Stack  先进后出 继承Vector,基于动态数组实现的一个线程安全的栈 继承Vector有很多方法
     */
    public static void main(String[] args) {
        //基本的创建 上面是底层分析 请一边阅读底层源码一边查看..
        List s1=new LinkedList();
        List s2=new ArrayList();
        List s3=new Vector();
        //父接口的arrayList缺少list接口的方法
        Collection s=new ArrayList();
        //栈 先进后出
        Stack s4=new Stack();
        //压栈
        s4.push(new Integer(11111));
        s4.push(new Integer(11112));
        //弹栈
        System.out.println(s4.pop());
    }
}

你可能感兴趣的:(Java,程序式界)