[英]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.