JavaSE学习(10) 集合框架

集合:

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





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值