首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

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

2013-01-28 
Android开发从零开始之java-集合框架(全)package testimport java.io.BufferedReaderimport java.io.Inp

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{//ArrayListArrayList<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()){//是否还有下一个//取出KeyString 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;}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;}}

热点排行