集合中ArrayList的使用
常用集合类主要分为Collection和Map两大分支,常用的有五个,HashMap、ArrayList、LinkedList、Vector、Stack
他们的关系如下:
使用ArrayList,实现员工的信息处理,代码如下:
package com.lj.test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Demo7_2 {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
//创建一个EmpManage对象
EmpManage em=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:删除一个雇员");
String opertype=br.readLine();
if("1".equals(opertype))
{
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);
em.addEmp(emp);
}
else if("2".equals(opertype))
{
System.out.println("请输入编号:");
String empNo=br.readLine();
em.qeuryEmp(empNo);
}
else if("3".equals(opertype))
{
System.out.println("请输入编号:");
String empNo=br.readLine();
System.out.println("请输入薪水:");
float newSalary=Float.parseFloat(br.readLine());
Emp emp=new Emp();
System.out.println("员工:"+empNo);
//System.out.println("姓名:"+emp.getName());
System.out.println("修改后的薪水为:"+newSalary);
}
else if("4".equals(opertype))
{
System.out.println("请输入编号:");
String empNo=br.readLine();
em.delEmp(empNo);
System.out.println("删除的是"+empNo+"员工");
System.out.println("恭喜你删除成功!");
}
}
}
}
class EmpManage{
ArrayList<Emp> al=new ArrayList<Emp>();
//添加员工信息
public void addEmp(Emp emp)
{
al.add(emp);
System.out.println("添加的员工信息为:");
System.out.println("编号是:"+emp.getEmpNo());
System.out.println("名字是:"+emp.getName());
System.out.println("工资是:"+emp.getSalary());
}
/*//显示员工信息
public void showInfo(String empNo)
{
for(Emp emp:al)
{
if("empNo".equals(emp.getEmpNo()))
{
System.out.println("找到了员工,他的信息是:");
System.out.println("编号是:"+emp.getEmpNo());
System.out.println("名字是:"+emp.getName());
System.out.println("工资是:"+emp.getSalary());
}
}
}*/
//查询员工信息
public void qeuryEmp(String empNo)
{ for(int i=0;i<al.size();i++)
{
for(Emp emp:al)
{
if("empNo".equals(emp.getEmpNo()))
System.out.println("查询的员工信息为:");
System.out.println("编号是:"+emp.getEmpNo());
System.out.println("名字是:"+emp.getName());
System.out.println("工资是:"+emp.getSalary());
}
}
}
//修改某位员工的工资
public void updateEmp(String empNo,float newSalary)
{
for(Emp emp:al)
{
if("empNo".equals(emp.getEmpNo()))
{
emp.setSalary(newSalary);
}
}
}
//删除某位员工
public void delEmp(String empNo)
{ for(int i=0;i<=al.size();i++)
{
for(Emp emp:al)
{
if("empNo".equals(emp.getEmpNo()))
{
//al.remove(i);
al.remove(emp);
}
}
}
}
}
class Emp{
private String empNo;
private String name;
private float salary;
public Emp() {
super();
}
public Emp(String empNo, String name, float salary) {
super();
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;
}
}
毕竟是新手,没用到反射,在修改完薪水后,不能传值覆盖原值,希望有人能加以改进!