先上一张图
因为比较烧脑 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());
}
}