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

这里写图片描述

先上一张图

因为比较烧脑 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());
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南归北隐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值