Java 如何在ArrayList中设置对象变量的值
我正在执行一项任务,我必须:Java 如何在ArrayList中设置对象变量的值,java,arraylist,Java,Arraylist,我正在执行一项任务,我必须: 创建具有以下属性/变量的Employee类: 名称 年龄 系 创建一个名为Department的类,该类将包含员工列表 a。Department类将有一个方法返回按年龄排序的员工 b。部门的值只能是以下值之一: “会计” “市场营销” “人力资源” “信息系统” 我正经历着最艰难的时刻,试图找出如何完成2b。 以下是我到目前为止的情况: import java.util.*; public class Employee { String name; int
- “会计”
- “市场营销”
- “人力资源”
- “信息系统”
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约定中,枚举的命名应该遵循常量,也就是说,值应该是会计、营销、人力资源、信息系统。如果需要,可以为枚举添加一个方法以提供人类可读的名称。