我有一個由字符串,雙精度和整數組成的變量列表,我想將它們存儲在一個列表中,遍歷列表並根據數據類型執行不同的操作。如何創建不同數據類型的列表,根據類型迭代並執行不同的操作?
最初我以爲我可以創建一個ArrayList來實現這一點,但其中一些是原始類型而不是對象,所以這不起作用。
我不知道列表中每個項目有多少,所以我不認爲我可以創建一個對象來保存所有不同的類型。
達到此目的的最佳方法是什麼?
我有一個由字符串,雙精度和整數組成的變量列表,我想將它們存儲在一個列表中,遍歷列表並根據數據類型執行不同的操作。如何創建不同數據類型的列表,根據類型迭代並執行不同的操作?
最初我以爲我可以創建一個ArrayList來實現這一點,但其中一些是原始類型而不是對象,所以這不起作用。
我不知道列表中每個項目有多少,所以我不認爲我可以創建一個對象來保存所有不同的類型。
達到此目的的最佳方法是什麼?
由於我們可以存儲任何類型,類也是實現此目的的替代方法。在 以下解決方案我創建了具有不同類型 變量的Employee類。
public class Employee {
static List<Employee> employeeList = new ArrayList<Employee>();
private int id;
private String firstName;
private int age;
private double salary;
private String department;
public Employee(int id, String firstName, int age, double salary,
String department) {
this.id = id;
this.firstName = firstName;
this.age = age;
this.salary = salary;
this.department = department;
}
public static void main(String[] argv) {
Employee employee1 = new Employee(1, "Pavan", 45, 20000.00,
"Uppal");
Employee employee2 = new Employee(2, "Mahesh", 35, 10000.00,
"Uppal");
employeeList.add(employee1);
employeeList.add(employee2);
}
}
2.其他替代方法是創建對象類型的ArrayList
List<Object> list=new Arraylist<Object>();
list.add(100);
list.add("hi")
list.add(12.0)
可以始終使用對象表示從原始類型像浮動而不是浮子,整型,而不是整數,等。通過這種方式,您可以使用null概念而不是默認值來識別數據無效的情況,這與原始類型會發生的情況相同。 如果你想要一個特殊的行爲,你可以實現一些模式,如訪客模式(https://www.tutorialspoint.com/design_pattern/visitor_pattern.htm)。
*爲什麼*你想這樣做?也許有更好的方法來實現這一點。 –
您是否意識到每種基元類型都存在包裝類?請參閱[維基百科文章](https://en.wikipedia.org/wiki/Primitive_wrapper_class)。此外,[autoboxin/unboxing](https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html)更加簡化了這一點。 –
你會發現你的ArrayList已經包含了你添加到它的原始類型的包裝器。 –