2015-03-12 1 views
-1

Итак, я хочу создать своего рода таблицу, используя ArrayLists как для столбцов, так и для строк. Это похоже на ArrayList внутри другого ArrayList. ArrayList столбцов (каждый с другим типом данных), где каждый столбец также является массивом данных ArrayList типа, указанного для этого столбца.Создание 2-мерного ArrayList с различными типами данных

Я мог бы действительно использовать вашу помощь о том, как я могу создать таблицу такого рода и как я могу обрабатывать информацию. Благодаря!

+0

Вы знаете точные типы, которые будут использоваться там? –

+0

они могут быть любыми типами: логическими, десятичными, целыми и строковыми – holyn

+0

Что вы хотите сделать с этой структурой? – stevecross

ответ

0

Вы можете создать такую ​​таблицу, как это:

List<List<?>> table = new ArrayList<>(); 

Это то, что вы просили, но я не думаю, что эта структура полезна. Вам нужно будет создать новый ArrayList для каждого столбца вашей таблицы. И данные в одном столбце должны всегда иметь один и тот же тип. В противном случае вы никогда не сможете получить данные в ячейке, потому что вы не знаете, к какому типу он должен быть применен. В качестве примера посмотрите на эту таблицу:

name | age 
------+----- 
alice | 25 
------+----- 
bob | 30 

Использование списков-sturcture, таблица может быть создана так:

table.add(new ArrayList<String>()); 
table.add(new ArrayList<Integer>()); 

Добавление и доступ к лицам, не комфортно и подвержен ошибкам:

table.get(0).add("alice"); 
table.get(1).add(25); 
table.get(0).add("bob"); 
table.get(1).add(30); 

String nameOfAlice = (String) table.get(0).get(0); 
Integer ageOfAlice = (Integer) table.get(1).get(0); 
String nameOfBob = (String) table.get(0).get(1); 
Integer ageOfBob = (Integer) table.get(1).get(1); 

Это можно сделать гораздо более эффективным, если вы создаете класс для строк:

public class Person { 

    private String name; 

    private int age; 

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

    // Getters & setters 

} 

Оператор DECLARE тха стол:

List<Person> persons = new ArrayList<>(); 

Теперь добавление и доступ к человеку гораздо проще:

persons.add(new Person("alice", 25)); 
persons.add(new Person("bob", 30)); 
Person alice = persons.get(0); 
Person bob = persons.get(1); 
Смежные вопросы