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

來源:互聯網
上載者:User

[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;      }  }   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.