集合:
List结构的集合类:
ArrayList类,LinkedList类,Vector类,Stack类
Map结构的集合类:
HashMap类,Hashtable类
Set结构的集合类
HashSet类,TreeSet类
Queue结构的集合
Queue接口
ArrayList和Vector的区别:
都是java集合类,都用来存放java对象
不同点:
1)Vector是同步的,这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。
2)数据增长:
从内部机制它们都是使用Array来控制集合中的对象。当增加元素的shi
HashMap和Hashtable区别:
都是java集合类,都用来存放java对象
区别:
1)Hashtable是基于陈旧的Directionary类,HashMap是java1.2引进的Map接口的一个实现
2)同步性:
Hashtable是同步的。这个类中的一些方法保证了Hashtable中的对象是线程安全的。而HashMap则是异步的,因此HashMap中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果不需要线程安全的集合那么使用HashMap是一个很好的选择,可以避免同步带来的不必要的开销,从而提高效率。
3)值:
HashMap允许将空值作为一个表的条目的key或value,但是Hashtable是不能放入空值的(null)。
总结:
1)要求线程安全,使用Vector、Hashtable
2)不要求线程安全,使用ArrayList,LinkedList、HashMap
3)要求键值,使用HashMap,Hashtable
4)数据量很大,又要线程安全考虑Vector
/
/* * 功能:Java集合的用法 * * */ package com.test1; //先引入一个包 import java.util.*; public class Demo7_1 { public static void main(String[] args) { // TODO Auto-generated method stub //Clerk clerk[]=new Clerk[??]; //定义ArrayList对象 ArrayList al=new ArrayList(); //显示大小 System.out.println("al大小:"+al.size()); //向al中加入数据(类型是Object) //创建一个职员 Clerk clerk1=new Clerk("宋江",50,1000); Clerk clerk2=new Clerk("吴用",45,1000); //将clerk1加入al中 al.add(clerk1); al.add(clerk2); //显示大小 System.out.println("al大小:"+al.size()); //如何访问al中对象(数据) //访问第一个对象 Clerk temp=(Clerk)al.get(0); System.out.println("第一个人是:"+temp.getName()); //遍历al所有的对象 for(int i=0;i<al.size();i++){ Clerk temp1=(Clerk)al.get(i); System.out.println("第"+(i+1)+"个人名字:"+temp1.getName()); } //如何从al中删除一个对象 al.remove(1); System.out.println("=======删除吴用========"); //遍历al所有的对象 for(int i=0;i<al.size();i++){ Clerk temp1=(Clerk)al.get(i); System.out.println("第"+(i+1)+"个人名字:"+temp1.getName()); } } } //定义一个员工类 class Clerk{ private String name; private int age; private float salary; public Clerk(String name,int age,float salary) { // TODO Auto-generated constructor stub 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; } }
package com.test1; import java.io.*; import java.util.*; public class Demo7_2 { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub //演示 /* String a=new String("abc"); String b=new String("abc"); if(a.equals(b))//if(a==b)是两个变量的地址 { System.out.println("same"); }*/ //创建EmpManage对象 EmpManage empManage=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("5:显示雇员信息:"); String openType=br.readLine(); if(openType.equals("1")){ System.out.println("请输入编号:"); String empNo=br.readLine(); System.out.println("请输入名字:"); String name=br.readLine(); System.out.println("请输入工资:"); float salary=Float.parseFloat(br.readLine()); Emp emp=new Emp(empNo, name, salary); empManage.addEmp(emp); }else if(openType.equals("2")){ System.out.println("请输入编号:"); String empNo=br.readLine(); empManage.showInfo(empNo); }else if(openType.equals("3")){ System.out.println("请输入编号:"); String empNo=br.readLine(); System.out.println("请输入工资:"); float newSal=Float.parseFloat(br.readLine()); empManage.updateSal(empNo, newSal); }else if(openType.equals("4")){ System.out.println("请输入编号:"); String empNo=br.readLine(); empManage.delEmp(empNo); }else if(openType.equals("5")){ System.out.println("请输入编号:"); String empNo=br.readLine(); empManage.showInfo(empNo); }else { //退出系统 System.exit(0); //break; } } } } //雇员管理类 class EmpManage{ private ArrayList al=null; public EmpManage() { // TODO Auto-generated constructor stub al=new ArrayList(); } //加入员工 public void addEmp(Emp emp){ al.add(emp); } //显示员工的相关信息 public void showInfo(String empNo){ //遍历整个ArrayList for(int i=0;i<al.size();i++){ //取出Emp对象 Emp emp=(Emp)al.get(i); //比较编号 if(emp.getEmpNo().equals(empNo)){ System.out.println("找到该员工,他的信息是:"); System.out.println("编号:"+empNo); System.out.println("姓名:"+emp.getName()); System.out.println("薪水:"+emp.getSalary()); } } } //修改工资 public void updateSal(String empNo,float newSal){ for(int i=0;i<al.size();i++){ Emp emp=(Emp)al.get(i); if(emp.getEmpNo().equals(empNo)){ //修改薪水 emp.setSalary(newSal); } } } public void delEmp(String empNo){ for(int i=0;i<al.size();i++){ Emp emp=(Emp)al.get(i); if(emp.getEmpNo().equals(empNo)){ al.remove(i); //al.remove(emp); }else{ System.out.println("查无此人!"); } } } public void avgSalary(){ float sumSal=0f; float avgSal=0f; int count=0; for(int i=0;i<al.size();i++){ Emp emp=(Emp)al.get(i); sumSal+=emp.getSalary(); } System.out.println("平均工资:"+sumSal/count); } } //雇员类 class Emp{ private String empNo; private String name; private float salary; public Emp(String empNo,String name,float salary) { // TODO Auto-generated constructor stub this.empNo=empNo; this.name=name; this.salary=salary; } public String getEmpNo() { return empNo; } public void setEmpNo(String empNo) { this.empNo = empNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getSalary() { return salary; } public void setSalary(float salary) { this.salary = salary; } }