在数组大小已经限定的条件下我们不能随意得增删改查,这时我们用到集合,能有效进行对象的增删改查
我们这里用ArrayList进行示范。
在这里我们定义一个员工类,一个员工管理类,如下
//员工类
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;
}
}
我们先看最后一个类,也就是员工类,员工的成员变量有编号,名字,工资,都为私有,并且都有set和get成员函数
主要类为员工管理类,我们把主要操作都封装在这里,功能我们主要讲增加,删除,查找,改。
我们首先在EmpManage类内定义一个空ArrayList对象al,al以后的操作都用得到,
<span style="color:#ff0000;">private ArrayList al=nul</span>l;
//构造
public EmpManage()
{
<span style="color:#ff0000;">al=new ArrayList();</span>
}
在每次增加员工时,都调用函数add(emp),把emp加入al中,即使用al.add(emp);加入al队列中,这个比较简单
//加入员工
public void addEmp(Emp emp)
{
<span style="color:#ff0000;">al.add(emp);</span>
}
其次是删除,我们需要知道删除哪个数,故需要传入参数编号empNo,遍历函数,列表中取出员工的编号与要删除的编号对比,相同则将这个员工移除队列,同时跳出循环
public void delEmp(String empNo) { int i=0; for(;i<al.size();i++) { Emp emp=(Emp)al.get(i); if(emp.getEmpNo().equals(empNo)) { al.remove(i); break; } if(i==al.size()) { System.out.println("查无此人!"); } } }
第三个是修改,在这里我们对工资进行修改,如下所示
//修改工资
public void updateSal(String empNo,float newSal)
{
int i=0;
for(;i<al.size();i++)
{
//取出Emp对象
Emp emp=(Emp)al.get(i);
//比较编号
if(emp.getEmpNo().equals(empNo))
{
System.out.println("找到该员工,他的工资原来是:");
System.out.println("工资="+emp.getSal());
emp.setSal(newSal);
System.out.println("后来工资="+emp.getSal());
break;
}
}
if(i==al.size())
{
System.out.println("查无此人!");
}
}
第四个是查询,我们只要给出编号,就可以返回信息
//显示员工的相关信息
public void showInfo(String empNo)
{//遍历整个ArrayList
int i=0;
for(;i<al.size();i++)
{
//取出Emp对象
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());
break;
}
}
if(i==al.size())
{
System.out.println("查无此人!");
}
以上就是集合ArrayList 的巧妙运用,我们可以通过他对对象进行简单操作
下面是完整代码
package com.test1;
import java.util.*;
import java.io.*;
public class Demo6_3 {
/**
* @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:表示修改一个雇员工资");
System.out.println("5:表示删除一个雇员");
System.out.println("6:表示找出最高工资");
System.out.println("7:表示找出平均工资");
System.out.println("8:进行升序工资");
System.out.println("9:表示退出系统");
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"))
{
em.showAll();
}
else if(operType.equals("4"))
{
System.out.println("请输入雇员编号:");
String empNo=br.readLine();
System.out.println("输入雇员工资: ");
float newSal=Float.parseFloat(br.readLine());
em.updateSal(empNo, newSal);
}
else if(operType.equals("5"))
{
System.out.println("请输入雇员编号:");
String empNo=br.readLine();
em.delEmp(empNo);
}
else if(operType.equals("6"))
{
em.maxSal();
}
else if(operType.equals("7"))
{
em.aveSal();
}
else if(operType.equals("8"))
{
em.orderEmp();
}
else if(operType.equals("9"))
{
System.exit(0);
}
}
}
}
//雇员管理类
class EmpManage{
private ArrayList al=null;
//构造
public EmpManage()
{
al=new ArrayList();
}
//加入员工
public void addEmp(Emp emp)
{
al.add(emp);
}
//显示员工的相关信息
public void showInfo(String empNo)
{//遍历整个ArrayList
int i=0;
for(;i<al.size();i++)
{
//取出Emp对象
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());
break;
}
}
if(i==al.size())
{
System.out.println("查无此人!");
}
}
//显示全部员工信息
public void showAll()
{
for(int i=0;i<al.size();i++)
{
//取出Emp对象
Emp emp=(Emp)al.get(i);
System.out.println("编号="+emp.getEmpNo());
System.out.println("名字="+emp.getName());
System.out.println("工资="+emp.getSal());
}
}
//修改工资
public void updateSal(String empNo,float newSal)
{
int i=0;
for(;i<al.size();i++)
{
//取出Emp对象
Emp emp=(Emp)al.get(i);
//比较编号
if(emp.getEmpNo().equals(empNo))
{
System.out.println("找到该员工,他的工资原来是:");
System.out.println("工资="+emp.getSal());
emp.setSal(newSal);
System.out.println("后来工资="+emp.getSal());
break;
}
}
if(i==al.size())
{
System.out.println("查无此人!");
}
}
//删除某个员工
public void delEmp(String empNo)
{
int i=0;
for(;i<al.size();i++)
{
Emp emp=(Emp)al.get(i);
if(emp.getEmpNo().equals(empNo))
{
al.remove(i);
break;
}
if(i==al.size())
{
System.out.println("查无此人!");
}
}
}
//求最高工资
public void maxSal(){
Emp maxEmp=(Emp)al.get(0);
for(int i=1;i<al.size();i++)
{
Emp em=(Emp)al.get(i);
if(em.getSal()>=maxEmp.getSal())
{
maxEmp=em;
}
}
System.out.println(maxEmp.getName()+"的工资最高,为"+maxEmp.getSal());
}
//求平均工资
public void aveSal(){
float sum=0;
float ave;
for(int i=0;i<al.size();i++){
Emp em=(Emp)al.get(i);
sum+=em.getSal();
}
ave=sum/al.size();
System.out.println("平均工资"+ave);
}
//工资从低到高排序
public void orderEmp()
{
for(int i=0;i<al.size()-1;i++)
{
Emp maxEmp=(Emp)al.get(0);
for(int j=1;j<al.size();j++)
{
Emp emp=(Emp)al.get(i);
if(maxEmp.getSal()<emp.getSal())
{
maxEmp=emp;
}
}
al.remove(maxEmp);
al.add(maxEmp);
}
}
}
//员工类
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;
}
}
如果你觉得有帮助,请给我一个赞(在左上角)