2015-04-25 2 views
1

Мне нужно создать двумерную таблицу, в которой я знаю ее количество столбцов, но я не знаю количество строк. Строки будут генерироваться через код и добавляться в таблицу. Мой вопрос в том, какая структура данных в java, по вашему мнению, была бы лучшей для этих функций?Создание динамического массива с фиксированным числом столбцов

ответ

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 предложил
  • Put сырые массивы в ArrayList:

    List<int[]> list = new ArrayList<>(); 
    list.add(new int[] {1, 2, 3}); 
    list.add(new int[] {4, 5, 6}); 
    
  • Использование некоторых специальных структура данных, как Table из Google 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); 
    
Смежные вопросы