Java 集合演示

Java 集合演示

/**
 * @(#)Test.java
 *
 *Java集合演示
 * @author 
 * @version 1.00 2019/3/27
 */
import java.util.HashMap;
import java.util.Hashtable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Stack;
import java.util.Vector;
class Stu{
	private String stuNo;
	private String name;
	private float score;
	
	public Stu(String StuNo,String name,float score)
	{
		this.stuNo=stuNo;
		this.name=name;
		this.score=score;
	}
	public String getStuNo(){
		return stuNo;
	}
	public void setStuNo(String stuNo){
		this.stuNo=stuNo;
	}
	public String getName(){
		return name;
	}
	public void setName(String name){
		this.name=name;
	}	
	public float getScore(){
		return score;
	}
	public void setScore(float score)
	{
		this.score=score;
	}
}
public class Test {

	public static void main(String[] args)
	{
		LinkedList ll=new LinkedList();
		Stu stu1=new Stu("9527S","周星驰",86.5f);
		Stu stu2=new Stu("74138N","三八译码器",48.3f);
		ll.addFirst(stu1);
		ll.addFirst(stu2);
		for(int i=0;i<ll.size();i++)
			System.out.println(((Stu)ll.get(i)).getName());	

在这里插入图片描述

Vector v=new Vector();//线程同步,可保存大量数据,ArrayList线程异步
		Stu stu3=new Stu("74151","同步计数器",86.5f);
		Stu stu4=new Stu("c919","国产大飞机",48.3f);
		v.add(stu3);
		v.add(stu4);
		for(int i=0;i<v.size();i++)
			System.out.println(((Stu)v.get(i)).getName());	

在这里插入图片描述

ArrayList al=new ArrayList();
		Stu stu01=new Stu("1313M","鲁班七号",66.2f);
		Stu stu02=new Stu("1515B","妲己",69.3f);
//		Stu stu03=new Stu("K456","王昭君",33.1f);
		al.add(stu01);
		al.add(stu02);
		al.add(stu02);	//可以放一个已经存在的对象		
		//删除办法
	//	al.remove(0);	
	//	al.remove(stu02);
		for(int i=0;i<al.size();i++)
			System.out.println(((Stu)al.get(i)).getName());	

在这里插入图片描述

	Stack stack=new Stack();
		Stu stu5=new Stu("A0031","诸葛村夫",86.5f);
		Stu stu6=new Stu("0919N","司马老贼",48.3f);	
		stack.add(stu5);
		stack.add(stu6);
		for(int i=0;i<stack.size();i++)
			System.out.println(((Stu)stack.get(i)).getName());	

在这里插入图片描述

	HashMap hm=new HashMap();//线程异步,效率低
		hm.put("s001",stu1);
		hm.put("s002",stu2);
		hm.put("s002",stu3);  //会造成,用后面的覆盖前面的
		hm.put("s004",stu4);
		hm.put("s005",stu5);
		hm.put("s006",stu6);

		
		if(hm.containsKey("s002"))
		{
			System.out.println("有该员工");
			Stu stu=(Stu)hm.get("s002");
			System.out.println("名字:"+stu.getName());
		}else{
			System.out.println("没有该员工");
		}
		
		//遍历HashMap所有的Key和Value
		Iterator it=hm.keySet().iterator();//迭代器
		while(it.hasNext())
		{
			String key=it.next().toString();
			Stu stu=(Stu)hm.get(key);
			System.out.println("名字:"+stu.getName());
		}//注意:取出顺序是乱序的

在这里插入图片描述

	Hashtable ht=new Hashtable();//线程同步,保证线程安全,效率低
//		ht.put(null,null)//会报错
		hm.put(null,null);//不会报错
	}
    public Test() {
    }  
}

ArrayList实现员工信息管理系统

 **
 * @(#)Test.java
 *
 *ArrayList实现员工信息管理系统
 * @author 
 * @version 1.00 2019/3/28
 */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Test {

	public static void initMenu()
	{
		System.out.println("**************************");
		System.out.println("欢迎使用员工信息管理系统!");
		System.out.println("**请选择你要进行的操作****");
		System.out.println("**    1.添加员工        **");
		System.out.println("**    2.查找员工        **");
		System.out.println("**    3.修改员工信息    **");
		System.out.println("**    4.删除员工        **");
		System.out.println("**    0.退出系统        **");
		System.out.println("**************************");		
	}
	public static void main(String[] args)
	{
		EmpManage em=new EmpManage();
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		while(true)
		{
			initMenu();
			try{
				int option=Integer.parseInt(br.readLine());
				switch(option)
				{
					case 1:
						System.out.println("请输入员工编号");
						String empNo1=br.readLine();
						System.out.println("请输入员工姓名");
						String name=br.readLine();
						System.out.println("请输入员工工资");
						float sal=Float.parseFloat(br.readLine());
						Emp emp=new Emp(empNo1,name,sal);
						em.addEmp(emp);
						break;
					case 2:
						System.out.println("请输入员工编号");
						String empNo2=br.readLine();
						em.showInfo(empNo2);
						break;
					case 3:
						System.out.println("请输入员工编号");
						String empNo3=br.readLine();
						System.out.println("请输入员工工资");
						float newSal=Float.parseFloat(br.readLine());
						em.updateSal(empNo3,newSal);
						break;
					case 4:
						System.out.println("请输入员工编号");
						String empNo4=br.readLine();
						em.deleteEmp(empNo4);
						break;
					case 0:
						System.exit(0);
				}//switch
			}catch(IOException e){
				e.printStackTrace();
			}
		}//while
	}//main
}//class Test
class EmpManage{
	private ArrayList al=null;
	public EmpManage()
	{
		al=new ArrayList();
	}
	//添加员工
	public void addEmp(Emp emp)
	{
		al.add(emp);
		System.out.println("添加成功!");
	}
	//显示信息
	public void showInfo(String empNo)
	{
		for(int i=0;i<al.size();i++)
			if(((Emp)al.get(i)).getEmpNo().equals(empNo))
			{
				System.out.println("员工编号:"+((Emp)al.get(i)).getEmpNo());
				System.out.println("员工姓名:"+((Emp)al.get(i)).getName());
				System.out.println("员工工资:"+((Emp)al.get(i)).getSal());
			}else {
				System.out.println("没有该员工!");
			}			
	}
	//修改工资
	public void updateSal(String empNo,float newSal)
	{
		for(int i=0;i<al.size();i++)
			if(((Emp)al.get(i)).getEmpNo().equals(empNo))
				((Emp)al.get(i)).setSal(newSal);
			else System.out.println("没有该员工!");	
	}
	//删除员工
	public void deleteEmp(String empNo)
	{
		for(int i=0;i<al.size();i++)
			if(((Emp)al.get(i)).getEmpNo().equals(empNo))
			{
				al.remove(i);
				System.out.println("删除成功!");
			}	
			else System.out.println("没有该员工!");
	}
}
class Emp{
	private String empNo;
	private String name;
	private float sal;
	
	public Emp(String empNo,String name,float sal)
	{
		this.empNo=empNo;
		this.name=name;
		this.sal=sal;
	}
	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 getSal(){
		return sal;
	}
	public void setSal(float sal){
		this.sal=sal;
	}
}//完

为了让这样一个系统具有实用性,增加了数据保存文件data.txt
一下是修改后的addEmp函数

public void addEmp(Emp emp)
	{
		File f=null;
		BufferedWriter output=null;
		String empNo=emp.getEmpNo();
		String name=emp.getName();
		String sal=Float.toString(emp.getSal());
		al.add(emp);
		try{
			f=new File("d:\\data.txt");	
			if(f.exists()) System.out.println("数据文件不存在");
			output=new BufferedWriter(new FileWriter(f,true));
			output.write(empNo);
			output.write("\r\n");
			output.write(name);
			output.write("\r\n");
			output.write(sal);
			output.write("\r\n");
			output.flush();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				output.close();
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		System.out.println("添加成功!");
	}

此外还增加了初始化函数initEmp,但仍存在诸多问题,文件的读写还不是很擅长
运行会出问题,之后再修改

public void initEmp()
	{
		int line=1;
		Emp emp=null;
		File f=null;
		FileReader fr=null;
		BufferedReader input=null;
		try{
			f=new File("d:\\data.txt");	
			if(f.exists()) System.out.println("数据文件不存在");
			fr=new FileReader(f);
			input=new BufferedReader(fr);
			while(input.readLine()!=null)
			{
				if(line%3==1)
				{
					emp=new Emp();	
					emp.setEmpNo(input.readLine());
				}
				else if(line%3==2)
					emp.setEmpNo(input.readLine());
				else if(line%3==0)
					emp.setSal(Float.parseFloat(input.readLine()));
					al.add(emp);
				line++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				input.close();
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}

总结:一个比较好一点的信息管理系统还需要,有一个GUI,还需要有数据库,

猜你喜欢

转载自blog.csdn.net/AnalogElectronic/article/details/88875054