[英]Creating List of Objects in JAVA
我正在尝试创建一个像这样的对象列表:
List<Employee> employee= new ArrayList<Employee>();
为此设置一个键和值,如下所示:
Employee emp = new Employee();
emp.setKey("John");
emp.setValue("305");
emp.setKey("David");
emp.setValue("790");
最后,我把它放在一个清单上:
employee.add(emp);
当我打印时,它只给我最后一个条目:
for(Employee em : employee){
System.out.println(em.getKey());
}
它只给我“大卫”而不是“约翰”和“大卫”
有人能告诉我该怎么办?
您只创建了一个对象:
Employee emp = new Employee();
emp.setKey("John");
emp.setValue("305");
Employee emp1 = new Employee();
emp1.setKey("David");
emp1.setValue("790");
employee.add(emp);
employee.add(emp1);
现在运行for循环
试试这个代码我修改了它。 您只创建了一个对象并更改其状态。
List<Employee> employee= new ArrayList<Employee>();
Employee emp = new Employee();
emp.setKey("John");
emp.setValue("305");
Employee emp1 = new Employee();
emp1.setKey("David");
emp1.setValue("790");
employee.add(emp);
employee.add(emp1);
for(Employee em : employee){
System.out.println(em.getKey());
}
您应该创建单独的对象。 您正在修改相同的对象,因此丢失了先前的对象状态。
List<Employee> employee= new ArrayList<Employee>();
// create employee 1
Employee emp1 = new Employee();
emp1.setKey("John");
emp1.setValue("305");
// create employee 2
Employee emp2 = new Employee();
emp2.setKey("David");
emp2.setValue("790");
// add both employees to list
employee.add(emp1);
employee.add(emp2);
for(Employee em : employee){
System.out.println(em.getKey());
}
您更改密钥和员工的价值而不将其添加到列表中,因此它将仅显示最后一个密钥和最后一个值。
这是怎么做的:
Employee emp = new Employee();
emp.setKey("John");
emp.setValue("305");
employee.add(emp);
emp = new Employee();
emp.setKey("David");
emp.setValue("790");
employee.add(emp);
List<Employee> emploee = new ArrayList<Employee>();
Employee emp1 = new Employee();
emp1.setKey("John");
emp1.setValue("305");
employee.add(emp1);
Employee emp2 = new Employee();
emp2.setKey("David");
emp2.setValue("790");
employee.add(emp2);
for(Employee em : employee){
System.out.println(em.getKey());
}
// or if you want to set the values via constructor
List<Employee> emploee = new ArrayList<Employee>();
employee.add(new Employee("John", "305"));
employee.add(new Employee("David", "790"));
for(Employee em : employee){
System.out.println(em.getKey());
}
当您为emp对象设置值时,您将使用David覆盖John的数据
Employee emp = new Employee();
emp.setKey("John");
emp.setValue("305");
在同一个对象“emp”中,您正在添加新条目。
emp.setKey("David");
emp.setValue("790");
您需要为David创建新对象
Employee emp1 = new Employee();
emp1.setKey("David");
emp1.setValue("790");
然后将两个对象添加到List。 这会奏效。
你的问题很简单。 在您的尝试中,您将修改同一对象两次。 您必须创建两个单独的对象来更正您的问题。
Employee emp1 = new Employee();
emp1.setKey("John");
emp1.setValue("305");
employee.add(emp1);
Employee emp2 = new Employee();
emp2.setKey("David");
emp2.setValue("790");
employee.add(emp2);
但在我看来,我认为,您不需要在将来修改员工的key
和value
。 您可以更好地将键和值设置器移动到构造函数来创建这样的员工。
employee.add(new Employee("John", "305"));
employee.add(new Employee("David", "790"));
此外,您的value
字段似乎是一个int
而不是一个String
。 我认为你可以更好地切换你的价值类型。
employee.add(new Employee("John", 305));
employee.add(new Employee("David", 790));
Employee
类的一个小例子,包含所有修改
public class Employee {
private final String key;
private final int value;
public Employee(String key, int value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public int getValue() {
return value;
}
}
此外,我认为,您可以将键和值字段名称更改为更明确的名称。 希望这可以帮助您进行代码学习。 玩得开心 !
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.