基于HashMap的雇员管理系统(增删改查)

简述HashMap的优缺点

优点:与ArrayList不同,他在查找特定的对象时,不需要每次都遍历。因为它加入元素的方法与之前不同。常用的方法如下。在使用前也需要引入包

import java.util.*;

HashMap map=new HashMap();

map.put(Object key,Object value);

map.get(Object key);

map.remove(Object key);

这里我们可以看到,它的操作是通过键值key获取对应的值value,所以每次在添加元素的时候都会给这个元素一个编号。在具体查找的过程中,只要通过一个布尔函数去判断是否包含具体的key或者value就可以找到。无需遍历。同样存进去之后类型是Object,如果想取出来给对象需要经行类型转换。

if(map.containsKey(Object key)){...}

if(map.containsValue(Object value)){...}

缺点:首先和ArrayList不同的一点是,ArrayList是允许添加相同的元素的,比如说在里面添加学生类的对象student。我可以把两个完全相同的student添加进去也不会冲突。但是HashMap的Key是唯一的,如果有第二个元素的key值与之前的一个元素相同,那么后来的这个元素的value会替换之前的。

其次。HashMap的遍历很麻烦,因为你想取出元素都是通过key的,如果用往常的循环的方法来做首先key的值就不知道。所以在这里需要用迭代器去解决这个问题。

Iterator it=map.keySet().iterator();

while(it.hasNext){

    //取出key

    String key=it.next().toString();

    //根据key取出对象

    Student su=(Student)map.get(key);

}

总而言之没有什么方法是万能的,在某方面解决了一个问题,另一方面就会有所欠缺。所以重要的是去看不同的问题去选择。例子是比较简单的所以两个集合都可以去做,主要是熟悉下语言和应用。

代码如下:

/**
 *作者:光羽住一
 * 作用:雇员类
 * 
 */
package Employee;

public class Emp {
	private String empNo;
	private String empName;
	private double empsal;
	
	public Emp(String empNo,String empName,double empsal) {
		this.empNo=empNo;
		this.empName=empName;
		this.empsal=empsal;
	}
	
	public String getEmpNo() {
		return empNo;
	}

	public void setEmpNo(String empNo) {
		this.empNo = empNo;
	}

	public String getEmpName() {
		return empName;
	}

	public void setEmpName(String empName) {
		this.empName = empName;
	}

	public double getEmpsal() {
		return empsal;
	}

	public void setEmpsal(double empsal) {
		this.empsal = empsal;
	}
}
package Employee;
/*
 * 基于HashMap的雇员管理系统
 */

import java.util.HashMap;

import javax.swing.text.html.HTMLDocument.Iterator;

public class empManage_map {
	private HashMap hm=null;
	
	public empManage_map() {
		hm=new HashMap();
		
	}
	
	//添加新的雇员
	public void addEmp(Emp emp) {
		hm.put(emp.getEmpNo(), emp);
		System.out.println("添加成功!");
	}
	
	//根据员工编号打印信息
	public void showInfo(String empNo) {
		if(hm.containsKey(empNo)) {
			Emp emp=(Emp)hm.get(empNo);
			System.out.println("姓名:"+emp.getEmpName()+"薪水:"+emp.getEmpsal());
		}
	}
	
	//打印全部员工的信息
	public void showAll() {
		java.util.Iterator it=hm.keySet().iterator();
		while(it.hasNext()) {
			String key=it.next().toString();
			Emp emp=(Emp)hm.get(key);
			System.out.println("姓名:"+emp.getEmpName()+"编号:"+emp.getEmpNo()+"薪水:"+emp.getEmpsal());
			
		}
	}
	
	//修改员工薪水
	public void changeSal(String empNo,double newSal) {
		if(hm.containsKey(empNo)) {
			Emp emp=(Emp)hm.get(empNo);
			emp.setEmpsal(newSal);
		}
	}
	
	//删除某个员工
	public void removeEmp(String empNo) {
		hm.remove(empNo);
		System.out.println("删除成功!");
	}
}
package Employee;
/*
 * 主界面类
 */
import java.io.*;
public class employeeCenter {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
		
		empManage_map manage=new empManage_map();
		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 type=buf.readLine();
			int choice =Integer.parseInt(type);
			switch(choice) {
			case 1:
				System.out.println("请输入雇员编号:");
				String empNo=buf.readLine();
				System.out.println("请输入雇员姓名:");
				String empName=buf.readLine();
				System.out.println("请输入雇员薪水:");
				String empSal=buf.readLine();
				double sal=Double.parseDouble(empSal);
				
				Emp emp=new Emp(empNo,empName,sal);
				manage.addEmp(emp);
				break;
			
			case 2:
				System.out.println("请输入要查找的员工编号:");
				String empNo2=buf.readLine();
				manage.showInfo(empNo2);
				break;
			
			case 3:
				manage.showAll();
				break;
			
			case 4:
				System.out.println("请输入要修改薪水的员工编号:");
				String empNo3=buf.readLine();
				System.out.println("请输入修改后的薪水:");
				String empSal3=buf.readLine();
				double sal3=Double.parseDouble(empSal3);
				manage.changeSal(empNo3, sal3);
				break;
				
			case 5:
				System.out.println("谢谢使用,再见!");
				System.exit(0);
				break;
			
			default :
				System.out.println("输入错误,请从新输入!");
				break;
			}
			
		}

	}

}






猜你喜欢

转载自blog.csdn.net/xieminyao123/article/details/79357439