Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發從零開始之java-集合框架(全)

Android開發從零開始之java-集合框架(全)

編輯:關於Android編程

[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());           }                      //Hashtable,用法上與HashMap很相似                                                       //用一個類來專門管理員工的信息           EmpManage emp = new EmpManage();           //讀取輸入           BufferedReader br = new BufferedReader(new InputStreamReader(System.in));           while(true){               System.out.println("請按提示操作");               System.out.println("1:添加一個員工");               System.out.println("2:查找一個員工");               System.out.println("3:修改一個員工工資");               System.out.println("4:刪除一個員工");               System.out.println("6: 查找所有員工");               System.out.println("5:退出程序");               String op = br.readLine();               if(op.equals("1")){                   System.out.println("請輸入名字:");                   String name = br.readLine();                   System.out.println("請輸入年齡:");                   int age = Integer.valueOf(br.readLine());                   System.out.println("請輸入薪水:");                   float sal = Float.parseFloat(br.readLine());                   Clerk c = new Clerk(name, age, sal);                   emp.addEmp(c);                   //System.out.println("添加成功");               }else if(op.equals("2")){                   System.out.println("請輸入員工姓名");                   String qname = br.readLine();                   emp.info(qname);               }else if(op.equals("3")){                   System.out.println("請輸入要修改員工的姓名:");                   String uname = br.readLine();                   System.out.println("請輸入要修改的工資:");                   float newsal = Float.parseFloat(br.readLine());                   emp.updateSal(uname, newsal);                   //System.out.println("修改成功");               }else if(op.equals("4")){                   System.out.println("請輸入要刪除的員工名字:");                   String dname = br.readLine();                   emp.delEmp(dname);                   //System.out.println("刪除成功");               }else if(op.equals("5")){                   System.exit(0);               }else if(op.equals("6")){                   emp.queal();               }           }                                           }      }   class EmpManage{//員工管理類       private ArrayList<Clerk> al = null;       public EmpManage(){           al = new ArrayList<Clerk>();       }       public void queal() {           for(Clerk c : al){               System.out.println("員工名:" + c.getName()+",薪水是:"                        + c.getSal()+ ",年齡是" + c.getAge());           }                  }       //加入員工       public void addEmp (Clerk c ){                      al.add(c);       }       //刪除員工       public void delEmp (String name){           boolean b = false;           for(Clerk c : al){               if(c.getName().equals(name)){//String 類型數據用==比較的是地址                   al.remove(c);                   b = true;                   break;               }           }           if(!b){               System.out.println("查無此人");           }else{               System.out.println("刪除成功");           }       }       //顯示員工的相關信息       public void info(String name){           boolean b = false;           for(int i = 0; i < al.size(); i ++){               Clerk c = al.get(i);               if(c.getName().equals(name)){                   b = true;                   System.out.println("你查找的員工:" + c.getName()+",薪水是:"                            + c.getSal()+ ",年齡是" + c.getAge());                   break;               }           }           if(!b){               System.out.println("查無此人");           }else{               System.out.println("查詢成功");           }       }       //修改員工工資       public void updateSal(String name , float sal){           boolean b = false;           for(Clerk c : al){               if(c.getName().equals(name)){                   c.setSal(sal);                   b = true;               }           }           if(!b){               System.out.println("查無此人");           }else{               System.out.println("修改成功");           }       }   }   class Clerk {//員工類       private String name;       public String getName() {           return name;       }       public void setName(String name) {           this.name = name;       }       public int getAge() {           return age;       }       public void setAge(int age) {           this.age = age;       }  www.2cto.com     public float getSal() {           return sal;       }       public void setSal(float sal) {           this.sal = sal;       }       private int age;       private float sal;       public Clerk (String name, int age, float sal){           this.age = age;           this.name = name;           this.sal = sal;       }   }    
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved