2015-04-25 56 views
1

我需要創建一個二維表,我知道它的列數,但我不知道行數。這些行將通過代碼生成並添加到表中。 我的問題是,你認爲哪種數據結構是最適合這些功能的?創建具有固定列數的動態數組

回答

2

您應該爲每個列創建一個包含字段的類。例如,這裏是一個Person類。

public final class Person { 

    private final String firstName; 
    private final String lastName; 
    private final int age; 

    public Person(String firstName, String lastName, int age){ 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.age = age; 
    } 

    public String firstName() { 
     return firstName; 
    } 

    public String lastName() { 
     return lastName; 
    } 

    public int age() { 
     return age; 
    } 
} 

然後您可以創建一個ArrayList<Person>。行數將根據需要增加。

例如

List<Person> table = new ArrayList<>(); 
table.add(new Person("John", "Smith", 52); 
table.add(new Person("Sarah", "Collins", 26); 
2

有幾種選擇:

  • 創建一個域類,並把它的實例爲ArrayList,作爲@pbabcdefp建議
  • 把原陣列到ArrayList

    List<int[]> list = new ArrayList<>(); 
    list.add(new int[] {1, 2, 3}); 
    list.add(new int[] {4, 5, 6}); 
    
  • 使用一些特殊的數據結構,像TableGoogle Guava

    Table<Integer, String, Object> table = HashBasedTable.create(); 
    // row 1 
    table.put(1, "Name", "John"); 
    table.put(1, "Age", 22); 
    // row 2 
    table.put(2, "Name", "Mike"); 
    table.put(2, "Age", 33);