美文网首页
聪聪工作室---JAVA入门小程序---员工管理构造函数

聪聪工作室---JAVA入门小程序---员工管理构造函数

作者: 繁花流水congcong | 来源:发表于2016-07-26 20:19 被阅读31次

Employee.java  代码

public class Employee {

private String name;

private int id;

private double salary;

public static int people=0;

public Employee(){

people++;

}

public Employee(String name,int id,double salary){

this();

this.name=name;

this.id=id;

this.salary=salary;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public double getSalary() {

return salary;

}

public void setSalary(double salary) {

this.salary = salary;

}

@Override

public String toString() {

return "[姓名:" + name + ", 工号:" + id + ", 工资:" + salary +"]";

}

}

HR.java   代码

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import java.util.Map;import java.util.Date;import java.util.HashMap;import java.util.Random;import java.util.TreeMap;//继承  Employee类public class HR extends Employee {// =========================定义20个数组================================private Listlist = new ArrayList();private static String[] names = { "赵1", "李2", "王3", "钱4", "科5", "赵6", "赵7", "赵8", "赵9", "赵10", "赵11", "赵12", "赵13","赵14", "赵15", "赵16", "赵17", "赵18", "赵19", "赵20" };private static int[] ids = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };private static double[] salarys = { 1111, 2222, 3333, 1111, 4444, 5555, 6666, 7777, 8888, 9999, 1234, 4567, 7890,1235, 1115, 6666, 8765, 6543, 7865, 5678 };// ==========================执行init()操作=======================================public HR() {init();}// =====================把定义的数组放到list列表中==================private void init() {for (int i = 0; i < 20; i++) {Employee e = new Employee(names[i], ids[i], salarys[i]);// 在for循环里新建一个对象list.add(e);// 在list里添加对象}System.out.print(list);}// =========================员工列表====================================public ListgetEmployees() { // List是返回值的意思,要返回的// Listlist = new// ArrayList();return list;}// ========================取最高工资的员工========================public Employee getTopSalaryEmployee() { // Employee是要返回的类型Employee employee = null; // 定义employee并且初始化为 空 值double max = 0;for (Employee e : list) { // 遍历if (e.getSalary() >= max) { // 取员工中工资的最大值 如果得到的大于已经知道的最大值max = e.getSalary(); // 那么 最大值就是取到的employee = e; // 返回员工就是e}}return employee;// 返回员工}// =============================取前面10个工资最高的员工========================public ListgetTop10SalaryEmployees() { // Listlist =// new// ArrayList();// 之前new 的对象的返回值类型Listtop10 = new ArrayList(); // 新建一个arraylist对象为top10for (Employee e : list) { // 遍历top10.add(e); // 在top10这个list列表里添加取到的值e,也就是代表前面10个工资最高的员工}Collections.sort(top10, new Comparator() {// mew// Comparator是新建一个比较器// top10是要进行比较操作的数组public int compare(Employee o1, Employee o2) { // 这些都是比较器中的内容 定义员工o1// 和员工 o2if (o1.getSalary() > o2.getSalary()) // 如果o1的工资大于o2的工资return -1; // 返回-1就是不进行排序else if (o1.getSalary() < o2.getSalary())// 如果o1的工资小于o2,那么就交换位置进行排序return 1; // 返回1就是 交换位置进行排序elsereturn 0; // 返回0就是不进行排序}});return top10.subList(0, 10); // 返回top10这个list列表中的前10个// subList(0,10)就是取前10个}// =========================增加一个新员工======================================public void enrollEmployee() {Random r = new Random(); // 随机增加一个新员工Employee e = new Employee("新员工" + people, people, 250 + r.nextInt(3000)); // people是一个id号// ,新员工1和新员工2// ,250+r.nextInt(3000)随便取3000以内的一个数并且加上250是工资薪水list.add(e);// 把新员工的信息添加到列表中}// ============================已经登记的员工,不登记==============================public void resignEmployee(int employeeId) { // int employeeId就是员工的idfor (int i = 0; i < list.size(); i++) {if (list.get(i).getId() == employeeId) { // 如果列表中已有该员工的id号list.remove(i); // 去掉重复的break; // break跳出循环}}}// =================================统计====================================public void count() {ListallEmployees = new ArrayList();// 新建一个list列表for (Employee e : list) {// 遍历allEmployees.add(e);// 在新建的列表里添加员工 e 也就是Employee}Mapmap = new TreeMap(new Comparator() {// 类// TreeMapK// -// 此映射维护的键的// V// -// 映射值的类型/* * Map类似list用来存放数据的 *  * Mapmap = new TreeMap(); 和Map map=new TreeMap(); *  * 这两个的区别是前一种形式指明Map中存放的类型key和value都是String类型的,其他形式的放入Map中会提示错误。 *  * 而后一种是Map中的key和value可以是任意类型对象,可以 *  * 既把String类型的放入也可以把Integer的类型放入都不会报错。 *  * 在foreach形式的循环中要求List或是Map必须明确指明其中存放数据的类型, *  * 否则不能使用这种形式的循环。 * *  */@Overridepublic int compare(Double o1, Double o2) {// 新建一个比较器 new// Comparator()

// int compare(T o1, T

// o2);

// TODO Auto-generated method stub

return o2.compareTo(o1);// 返回 员工o1和员工o2所比较的结果 调用系统方法中的

/*

* public static int compare(double d1, double d2) { if (d1 <

* d2) return -1; // Neither val is NaN, thisVal is smaller if

* (d1 > d2) return 1; // Neither val is NaN, thisVal is larger

*

*

* 的类似

*

*/

}

});

for (int i = 0; i < allEmployees.size(); i++) { // 循环

double sa = allEmployees.get(i).getSalary(); // 得到数组中其中一个对象的 工资

if (map.containsKey(sa)) { // key - 测试是否存在于此映射中的键 sa是一个固定数目的工资

// 如果此映射包含指定键的映射关系,则返回 true。

int val = map.get(sa) + 1; // 统计 如果发现一个相同工资的就+1

// get是连接一个特殊的值和一个特殊的键

map.put(sa, val);/* 发现已经存在的值就加1 进行统计 */

} else {

map.put(sa, 1);// 发现新的值 就把它数量定为 1

}

}

System.out.println("统计工资:");

for (Double d : map.keySet()) {// map中取出所有的键值 并用set进行排序

System.out.println("工资" + d + "的员工有" + map.get(d) + "人");

} // d是 工资值 map中 键值和数值是相关联的 get得到d的统计值

}

// =========================输出========================================================================

public String toString() {

return "员工列表:  " + list  + ",最高工资的员工:"

+ getTopSalaryEmployee() + ", 前十个最高工资的员工: " + getTop10SalaryEmployees() ;

}

}

testEmp.java 代码

public class testEmp {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("所有的员工列表:    ");

HR test = new HR();

System.out.println(test.getEmployees());

System.out.println("========================================================");

System.out.println("前10个工资最高的员工:  ");

System.out.println(test.getTop10SalaryEmployees());

System.out.println("=================================================================");

System.out.println("最高工资的员工:  ");

System.out.println(test.getTopSalaryEmployee());

System.out.println("==============================================");

}

}

相关文章

网友评论

      本文标题:聪聪工作室---JAVA入门小程序---员工管理构造函数

      本文链接:https://www.haomeiwen.com/subject/fpznjttx.html