Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在ArrayList中设置对象变量的值_Java_Arraylist - Fatal编程技术网

Java 如何在ArrayList中设置对象变量的值

Java 如何在ArrayList中设置对象变量的值,java,arraylist,Java,Arraylist,我正在执行一项任务,我必须: 创建具有以下属性/变量的Employee类: 名称 年龄 系 创建一个名为Department的类,该类将包含员工列表 a。Department类将有一个方法返回按年龄排序的员工 b。部门的值只能是以下值之一: “会计” “市场营销” “人力资源” “信息系统” 我正经历着最艰难的时刻,试图找出如何完成2b。 以下是我到目前为止的情况: import java.util.*; public class Employee { String name; int

我正在执行一项任务,我必须:

  • 创建具有以下属性/变量的Employee类: 名称 年龄 系

  • 创建一个名为Department的类,该类将包含员工列表

    a。Department类将有一个方法返回按年龄排序的员工

    b。部门的值只能是以下值之一:

    • “会计”
    • “市场营销”
    • “人力资源”
    • “信息系统”
  • 我正经历着最艰难的时刻,试图找出如何完成2b。 以下是我到目前为止的情况:

    import java.util.*;
    
    public class Employee {
    String name; 
    int age;
    String department;
    
    Employee (String name, int age, String department) {
        this.name = name;
        this.age = age;
        this.department = department;
    
    }
    int getAge() {
        return age;
    }
    }
    
    class Department {
    public static void main(String[] args) {
        List<Employee>empList = new ArrayList<Employee>();
    
        Collections.sort (empList, new Comparator<Employee>() {
            public int compare (Employee e1, Employee e2) {
                return new Integer (e1.getAge()).compareTo(e2.getAge());
            }
        });
        }
    }   
    
    import java.util.*;
    公营雇员{
    字符串名;
    智力年龄;
    弦乐部;
    员工(字符串名称、整数年龄、字符串部门){
    this.name=名称;
    这个。年龄=年龄;
    这个部门=部门;
    }
    int getAge(){
    回归年龄;
    }
    }
    班级部{
    公共静态void main(字符串[]args){
    ListempList=newarraylist();
    Collections.sort(empList,newcomparator(){
    公共整数比较(员工e1、员工e2){
    返回新整数(e1.getAge()).compareTo(e2.getAge());
    }
    });
    }
    }   
    
    您可以出于同样的目的使用枚举,这将限制您仅使用指定的值。 按如下说明申报您的部门

    public enum Department {
    
        Accounting, Marketting, Human_Resources, Information_Systems
    
    }
    
    您现在可以使用
    Employee

    public class Employee {
        String name;
        int age;
        Department department;
    
        Employee(String name, int age, Department department) {
            this.name = name;
            this.age = age;
            this.department = department;
    
        }
    
        int getAge() {
            return age;
        }
    }
    
    在创建员工时,您可以使用

    Employee employee = new Employee("Prasad", 47, Department.Information_Systems);
    
    编辑正如Adrian Shum所建议的,当然,这是一个很好的建议

    • 枚举是常量,这就是为什么根据java约定用大写字母声明很好的原因
    • 但我们不希望看到枚举的大写表示形式,因此我们可以创建枚举构造函数并向其传递可读信息
    • 我们将修改enum以包含
      toString()
      方法和
      构造函数,后者接受字符串参数

       public enum Department {
      
         ACCOUNTING("Accounting"), MARKETTING("Marketting"), HUMAN_RESOURCES(
              "Human Resources"), INFORMATION_SYSTEMS("Information Systems");
      
         private String deptName;
      
          Department(String deptName) {
             this.deptName = deptName;
          }
      
         @Override
         public String toString() {
          return this.deptName;
         }
      
      }
      
    因此,当我们创建一个
    Employee
    对象并使用它时

    Employee employee = new Employee("Prasad Kharkar", 47, Department.INFORMATION_SYSTEMS);
    System.out.println(employee.getDepartment()); 
    
    我们将得到一个可读的字符串表示形式,即
    informationsystems
    ,因为它是由
    toString()
    方法返回的,该方法由
    System.out.println()语句隐式调用。
    
    阅读关于

    “b的好教程。部门的值只能是以下值之一:“会计”“营销”“人力资源”“信息系统”
    ——为此属性使用类型,而不是字符串。这将强制Java只允许此变量或参数的特定类型项。有关更多信息,请下次查看,请仅提供与您的问题相关的信息。所有的代码和你作业的大部分描述都与你的问题无关。哦,哇……现在更有意义了。非常感谢你!这是一个很好的解决方案。只是一个建议,在Java约定中,枚举的命名应该遵循常量,也就是说,值应该是
    会计、营销、人力资源、信息系统
    。如果需要,可以为枚举添加一个方法以提供人类可读的名称。