package com.xian.test;

 

import java.util.ArrayList;

import java.util.Enumeration;

import java.util.HashMap;

import java.util.HashSet;

import java.util.Hashtable;

import java.util.Iterator;

import java.util.List;

import java.util.Set;

import java.util.TreeSet;

 

public class JavaList {

    public static void main(String[] args) throws Exception {

    //getList();

    getHash();

    getSet();

}

    /**

     * arrayList随机存取效率高,线程不安全,可重复,根据下标可取值  源码中构造参数为10,初始容量10,每次增长50%  

     * 添加数据到 前面或中间效率低,linkedList链表按顺序访问,前面或中间 添加删除数据时 较快。 

     * Vector线程安全。

     * @author  贾小仙

     * @serialData 2015-4-16 10:37

     */

    public static void getList(){

    List arrayList=new ArrayList();

    arrayList.add("贾小仙");

    arrayList.add("小清");

    System.out.println(arrayList.get(0)+"  |  |  "+arrayList.get(1));

    arrayList.add(0, "Fuck you");

    arrayList.set(1, "我名字消失了");

    System.out.println(arrayList.get(0)+"  |  |  "+arrayList.get(1)+" | | "+arrayList.get(2));

    System.out.println(arrayList.contains("小清"));//判断是否存在

    }

    /**

     * hashMap线程不安全,  允许key和value为null, 无序存放。containsKey ,containsValue, Iterator 迭代。  

     * hashTable线程安全,不允许key和value为null,无序存放,contains,containsKey ,containsValue, Enumeration迭代。

     *(synchronized)

     * @throws Exception  

     * @author 贾小仙

     */

    public static void getHash() throws Exception {

    HashMap map=new HashMap();

    map.put("you", "小清");

    map.put("me", "贾小仙");

    System.out.println(map.get("you")+" | | "+map.get("me"));

    if(map.put("me", "error")!=null)

    System.out.println("不允许重复");

    //throw new Exception("不允许重复");

    map.put("null", "null");

    System.out.println(map.get("null"));

    if(map.containsKey("me"))

    System.out.println("me的key是存在。");

    Set set=map.entrySet();        //iterator迭代必须是set所以返回给set然后迭代。

    Iterator iter=set.iterator();  

    while(iter.hasNext()){

    System.out.println("iterator迭代 :        "+iter.next());

    }

    Hashtable table=new Hashtable();

    table.put("you", "小清");

    table.put("me", "贾小仙");

    table.put("null", "null");//字符串的null是可以的.这个null就会出现nullpointException

    Enumeration e=table.elements();

    while(e.hasMoreElements()){   //可以看出来 是无序的。

    Object next=e.nextElement();

    System.out.println("迭代的参数:      "+next);

    }

    }

    /**

     * set集合有一个特色。就是set里面的不重复。所以可以用set来做一些去重的操作。很方便。

     * set迭代使用iterator 

     * hashSet无序的存放, TreeSet有序的存放。 

     */

    public static void getSet(){

    Set set=new HashSet();

    set.add("贾小仙");

    set.add("小清");

    if(set.add("小清"))

    System.out.println("不可以重复哦。");

    TreeSet treeSet=new TreeSet();

    treeSet.add("me");

    treeSet.add("you");

    Iterator iter=treeSet.iterator();

    while(iter.hasNext()) //有序的

    System.out.println("treeSet的Iterator迭代               "+iter.next());

    }

}