2017-04-07 96 views
0

我有一個由字符串,雙精度和整數組成的變量列表,我想將它們存儲在一個列表中,遍歷列表並根據數據類型執行不同的操作。如何創建不同數據類型的列表,根據類型迭代並執行不同的操作?

最初我以爲我可以創建一個ArrayList來實現這一點,但其中一些是原始類型而不是對象,所以這不起作用。

我不知道列表中每個項目有多少,所以我不認爲我可以創建一個對象來保存所有不同的類型。

達到此目的的最佳方法是什麼?

+0

*爲什麼*你想這樣做?也許有更好的方法來實現這一點。 –

+2

您是否意識到每種基元類型都存在包裝類?請參閱[維基百科文章](https://en.wikipedia.org/wiki/Primitive_wrapper_class)。此外,[autoboxin/unboxing](https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html)更加簡化了這一點。 –

+0

你會發現你的ArrayList已經包含了你添加到它的原始類型的包裝器。 –

回答

1
  1. 由於我們可以存儲任何類型,類也是實現此目的的替代方法。在 以下解決方案我創建了具有不同類型 變量的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) 
    
0

可以始終使用對象表示從原始類型像浮動而不是浮子,整型,而不是整數,等。通過這種方式,您可以使用null概念而不是默認值來識別數據無效的情況,這與原始類型會發生的情況相同。 如果你想要一個特殊的行爲,你可以實現一些模式,如訪客模式(https://www.tutorialspoint.com/design_pattern/visitor_pattern.htm)。