package com.test2; import java.util.*; /** * @author qingfeng * 功能:集合类练习 */ public class Collection { public static void main(String[] args) { // TODO Auto-generated method stub ClerkManager cm = new ClerkManager(); Clerk clerk1 = new Clerk("yan",20,1332.1f); //cm.addClerk(clerk1); //cm.showArrayListInfo(); //cm.showVectorListInfo(); Clerk clerk2 = new Clerk("zhang",20,15532.26f); //cm.addClerk(clerk2); //cm.showLinkListInfo(); Clerk clerk3 = new Clerk("zhao",20,11.1f); //会覆盖原来的!!(因为HashMap不允许key值重复)注意与ArrayList的区别! cm.addClerk_HashMap(clerk1); cm.addClerk_HashMap(clerk2); cm.addClerk_HashMap(clerk3); //cm.isExisted(); //cm.showAllInfo_HashMap(); Clerk clerk4 = new Clerk(null,20,566.1f); cm.addClerk_HashMap(clerk4); cm.isExisted(); //cm.showAllInfo_HashMap(); //cm.addClerk_Hashtable(clerk4); //cm.isExisted(); //cm.showAllInfo_Hashtable(); } } //员工管理类 class ClerkManager { //成员属性:对象的引用 ArrayList al = null;//数组列表 高效率 Vector vec = null;//向量 线程安全 并发 LinkedList ll= null;//链型列表 HashMap hm = null;//键值对 高效率 Hashtable ht= null;//键值对 线程安全 并发 //构造方法:创建对象 public ClerkManager() { al = new ArrayList(); vec = new Vector(); ll = new LinkedList(); hm = new HashMap(); ht = new Hashtable(); } //添加员工 public void addClerk(Clerk clerk) { //al.add(clerk); //vec.add(clerk); //ll.addFirst(clerk);//栈型结构:先输入后输出 //ll.addLast(clerk);//队列型结构:先进先出 } public void addClerk_HashMap(Clerk clerk) { hm.put(clerk.getName(), clerk);//key值为姓名 value为对象!! } public void addClerk_Hashtable(Clerk clerk) { ht.put(clerk.getName(), clerk); } //显示所有员工(ArrayList 遍历) public void showArrayListInfo() { for(int i=0; i<al.size(); i++) { Clerk clerk = (Clerk)al.get(i);//从数组中取出对象 System.out.println(clerk.getSalary());//用对象去调用方法 } } //显示所有员工(Vector 遍历) public void showVectorInfo() { for(int i=0; i<vec.size(); i++) { Clerk clerk = (Clerk)vec.get(i);//取出对象 System.out.println(clerk.getSalary());//用对象去调用方法 } } //显示所有员工(LinkedList 遍历) public void showLinkListInfo() { for(int i=0; i<ll.size(); i++) { Clerk clerk = (Clerk)ll.get(i);//取出对象 System.out.println(clerk.getSalary());//用对象去调用方法 } } //HashMap查看是否有员工 public void isExisted() { if(hm.containsKey(null)) { System.out.println("你所查的key值存在!"); Clerk clerk=(Clerk)hm.get(null); System.out.println(clerk.getSalary()); } else { System.out.println("你所查的key值不存在!"); } } //HashMap遍历所有对象 //Iterator(接口)迭代器; keySet()返回此映射中所包含的键的 Set 视图;iterator()返回在此 set 中的元素上进行迭代的迭代器。 public void showAllInfo_HashMap() { Iterator it = hm.keySet().iterator(); while(it.hasNext())//hasNext返回boolean { String key = it.next().toString();//next()取出key Clerk clerk = (Clerk)hm.get(key); System.out.print("名字:"+clerk.getName()); System.out.print(" 年龄:"+clerk.getAge()); System.out.println(" 薪水:"+clerk.getSalary()); } } //Hashtable与HashMap的区别测试 public void showAllInfo_Hashtable() { Iterator it = ht.keySet().iterator(); while(it.hasNext())//hasNext返回boolean { String key = it.next().toString();//next()取出key Clerk clerk = (Clerk)ht.get(key); System.out.print("名字:"+clerk.getName()); System.out.print(" 年龄:"+clerk.getAge()); System.out.println(" 薪水:"+clerk.getSalary()); } } } class Clerk { private String name; private int age; private float salary; public Clerk(String name, int age, float salary) { this.name = name; this.age = age; this.salary = salary; } 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; } public float getSalary() { return salary; } public void setSalary(float salary) { this.salary = salary; } }