当前位置:编程学习 > JAVA >>

Android开发从零开始之java-集合框架(全)

[java]  
package test;  
  
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.util.*;  
  
/* 
 * 作者:钟志钢 
 * 功能:集合框架 
 * 时间:2013-1-26 
 * 1,List结构:ArrayList,LinkedList,Vector,Stack; 
 * 2, Map结构:HashMap, Hashtable;(map,映射) 
 * 3, set结构:HastSet,TreeSet; 
 * 4, Queue结构:Queue接口 
 * 5,Hashtable与HashMap区别 
 *      历史性:Hashtable出现得比较早,基于陈旧的Dictionary,HashMap是java1.2的一个接口Map的实现 
 *      同步性:Hashtable是同步的,线程安全的;HashMap是异步的,高效的 
 *      空值性:HashMap允许有空值(Key或vaule),Hashtable不能 
 * 6, ArrayList与Vector的区别 
 *      同步性:Vector 是同步的,线程安全的,ArrayList异步的,高效的 
 *      数据增长:在缺省的情况下,Vector一倍增长,ArrayList半倍增长,存放大量数据时用Vector, 
 * 7,集合使用总结: 
 *      要求线程安全,用Vector,Hasstable 
 *      不要求线程安全,不涉及并发,用ArrayList,LinkedList,HashMap 
 *      要求有键值对,用HashMap与Hashtable 
 *      数据量很大,又考虑线程安全,用Vector 
 */  
public class 集合框架 {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) throws Exception{  
        //ArrayList  
        ArrayList<Clerk> al = new ArrayList<Clerk>();  
        Clerk c1 = new Clerk("宋江", 50, 1000);  
        al.add(c1);//添加到尾部  
        Clerk c3 = new Clerk("吴用", 45, 2000);  
        al.add(c3);//添加到尾部  
        al.add(c3);//可以加相同的对象  
        System.out.println("al.lenght=" + al.size());  
        Clerk c2 = new Clerk("武松", 30, 10004.4f);  
        al.add(0, c2);//加到指定位置,原来的会往看推  
        al.remove(3);//删除相应的对象  
        //System.out.println(al.get(1).getName());  
        for(Clerk c : al){  
            //System.out.println(c.getName());  
        }  
          
          
        //LinkedList.可序列的链表  
        LinkedList ll = new LinkedList();  
        ll.addFirst(c1);//加到列表最前面,相当于ArrayList中的al.add(0, c2);  
        ll.addLast(c2);//加到最后面  
        ll.addLast(c2);  
        System.out.println("LinkedList.getFirst()---"+((Clerk)ll.getFirst()).getName());  
        System.out.println("LinkedList.getList()---"+((Clerk)ll.getLast()).getName());  
        for(int i = 0; i < ll.size(); i ++){  
            System.out.println("LinkedLsit-for-"+((Clerk)ll.get(i)).getName());  
        }  
        //ll.removeFirst();  
        //ll.removeLast();  
        ll.removeFirstOccurrence(c2);//删除从头开始的第一个与C2相同的元素  
        ll.removeLastOccurrence(c2);//删除从后面开始的第一个与C2相同的元素  
        for(int i = 0; i < ll.size(); i ++){  
            System.out.println("LinkedLsit-for-"+((Clerk)ll.get(i)).getName());  
        }  
          
        //Vector,向量  
        Vector vv = new Vector();  
        vv.add(c1);  
        vv.add(c2);  
        for(int i = 0; i < vv.size(); i ++){  
            System.out.println("vector-for-"+((Clerk)vv.get(i)).getName());  
        }  
          
        //Stack,栈  
        Stack ss = new Stack();  
        ss.add(c1);//默认加到最前面,是为压栈???可测试后似乎不是如此  
        ss.add(c2);  
        for(int i = 0; i < ss.size(); i ++){  
            System.out.println("Stack-for-"+((Clerk)ss.get(i)).getName());  
        }  
        System.out.println("stack===" + ((Clerk)ss.get(0)).getName());  
          
        //HashMap,  
        HashMap hm = new HashMap();  
        hm.put("宋江", c1);  
        hm.put("武松", c2);  
        hm.put("宋江", c3);//当Key相同时,可叠加,但不能重复,只会代替。宋江会变成吴用  
        //查找宋江的信息  
        if(hm.containsKey("宋江")){  
            System.out.println("HashMap---" + "有宋江的信息");  
            Clerk mc = (Clerk) hm.get("宋江");  
        }else{  
            System.out.println("HashMap---" + "没有宋江的信息");  
        }  
        //遍历HashMap,用iterator迭代器  
        Iterator it = hm.keySet().iterator();  
        while(it.hasNext()){//是否还有下一个  
            //取出Key  
            String key = it.next().toString();  
            Clerk c = (Clerk) hm.get(key);  
            System.out.println("HashMap==" + c.getName());  
        }  
         &n
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,