Java容器类之List

Java容器类中包含有List,List也分为ArrayList、LinkList、Vector和Stack。

这几个链表都有相同的特性。在方法上面的使用也是大同小异。

ArrayList是属于线性表,元素时挨着放置的。

LinkList是非线性表,和数据结构一样,是散列排放在内存中。透过指向下一个元素来连接起来的。

Vector是一个向量,类似于队列,先进先出。

Stack是栈,先进后出。

 

下面先按照ArrayList举例说明:

/**
 * 
 * @author Administrator
 * 这里是管理雇员的类
 */
class EmpMange{
	private ArrayList al = null;
	
	public EmpMange()
	{
		 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)al.get(i);
			
			if(emp.getEmpNo().equals(empNo))
			{
				System.out.println("找到该员工:");
				System.out.println("编号:" + emp.getEmpNo());
				System.out.println("姓名:" + emp.getName());
				System.out.println("工资:" + emp.getSal());
				
			}
		}
	}
	
	//显示所有员工信息
	public void showAllInfo()
	{
		for(int i = 0; i < al.size(); i++)
		{
			Emp emp = (Emp)al.get(i);
		
			System.out.println("编号:" + emp.getEmpNo());
			System.out.println("姓名:" + emp.getName());
			System.out.println("工资:" + emp.getSal());
			System.out.println(" ");
		}
	}
	
	//修改员工工资
	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.setSal(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); //按照名字删
			}
		}
	}
}

/**
 * 
 * @author Administrator
 * 这里是被管理的雇员类
 */
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;
	}
	
	
}

 

接着是调用这个类EmpManage:

EmpMange em = new EmpMange();
		
		//从控制台输入信息
		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 operType = br.readLine();
			
			if(operType.equals("1"))
			{
				//获取新员工信息
				System.out.println("请输入员工编号:");
				String empNo = br.readLine();
				System.out.println("请输入员工姓名:");
				String name = br.readLine();
				System.out.println("请输入员工工资:");
				float sal = Float.parseFloat(br.readLine());
				
				//新建该员工
				Emp emp = new Emp(empNo, name, sal);
				
				//添加到管理的库中
				em.addEmp(emp);
			}
			else if(operType.equals("2"))
			{
				System.out.println("请输入员工编号:");
				String empNo = br.readLine();
				
				em.showInfo(empNo);
			}
			else if(operType.equals("3"))
			{
				System.out.println("请输入员工编号:");
				String empNo = br.readLine();
				System.out.println("请输入员工工资:");
				float sal = Float.parseFloat(br.readLine());
				
				em.updateSal(empNo, sal);
			}
			else if(operType.equals("4"))
			{
				System.out.println("请输入员工编号:");
				String empNo = br.readLine();
				
				em.delEmp(empNo);
			}
			else if(operType.equals("5"))
			{
				//退出系统
				System.exit(0);
			}
		}

运行结果如下:

在控制台中输入相关信息就可以了。

 

//=============================分割线================================

对于上面的例子有几点要注意一下:

1、是对异常的处理,在做br.readline()的时候。可能出现异常,我们直接在main中throws Exception,抛出去让编译器自己处理。或者我们可以用try...catch...来处理。

2、这个是线性表的例子,对于LinkList、Vector、Stack都一样的属性,不同的是他们在处理方法上面可能会有所区别。

比如LinkList 会有addFirst、addLast...等等方法。这个需要在实际使用时根据需求来使用。

3、List中要找对应的元素,一般只能用遍历的方法。因为还不想其他有键值的容器可以直接查找。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值