Коллекция Java FrameWork - PullRequest
       1

Коллекция Java FrameWork

1 голос
/ 09 марта 2012

Я хочу хранить Arraylist внутри другого списка, кое-что как это, я знаю, что это неправильно, но в значительной степени так ...

 List list=new ArrayList();
 list.add(new("element1","element2","element3",element4=?);
 list.add(new("element5","element6","element7",element8=?);

теперь, если вы видите приведенный выше код, это нормально и хорошодобавить элементы или первую строку в список до третьего элемента, но четвертый элемент - это другой массив [string array], как добавить его или добавить к первой строке элемента.то же самое со второй строкой.

ПРИМЕЧАНИЕ: - element4 и element8 также отличаются по длине, значит element4 имеет 2 строки, а element 8 имеет 10 строк.

при отображениисписок, который должен отображать список, подобный этому

  The first row of list is
  element1  element2  element3  element4.1  element4.2 
  the second row of list is
  element5  element6  element7  element8.1  element8.2 element8.3 element8.4 element8.5 element8.6 element8.7 element8.9 element8.10

Ответы [ 4 ]

1 голос
/ 09 марта 2012

Итак, из того, что я понял по вашему вопросу, вам нужна List<List<String>>.Сделайте это следующим образом:

    List<String> strs1 = new ArrayList<String>();
    strs1.add("element1");
    strs1.add("element2");

    List<String> strs2 = new ArrayList<String>();
    strs2.add("element3");

А затем

    List<List<String>> listOfList = new ArrayList<List<String>>();
    listOfList.add(strs1);
    listOfList.add(strs2);

ИЛИ

    List<List<String>> asList = Arrays.asList(strs1, strs2);
0 голосов
/ 09 марта 2012

Объедините его в Список списков списков , трехмерную матрицу - даже если ваши первые элементы имеют отдельные значения, имеет смысл обернуть их в списки просто для упрощения кода:

List<List<List<String>>> matrix = new ArrayList<List<List<String>>>();

List<List<String>> row = new ArrayList<List<String>>();
matrix.add(row);

List<String> column1 = new ArrayList<String>();
column1.add("element1");
row.add(column1);

List<String> column2 = new ArrayList<String>();
column1.add("element2.1");
column1.add("element2.2");
row.add(column2);
0 голосов
/ 09 марта 2012

Вы пробовали следующим образом:

    List list = new ArrayList();
    list.add(Arrays.asList("element1", "element2", "element3",
            Arrays.asList("element4.1", "element4.2")));
    list.add(Arrays.asList("element5", "element6", "element7",
            Arrays.asList("element8.1", "element8.2", "element8.3")));

    // print values
    System.out.println(list.get(0));
    System.out.println(list.get(1));
0 голосов
/ 09 марта 2012

Вы можете добавить списки в другие списки, выполнив что-то вроде этого: List<List<String>> myList = new ArrayList<List<String>>();....Однако, учитывая, что вы добавляете элементы другого типа, я бы порекомендовал вам сделать следующее (при условии, что у вас всегда есть 3 списка массивов и 1 массив):

  • Создать новый класскоторый принимает 4 аргумента, это 3 списка массивов и 1 массив.

  • Пусть ваш класс переопределит свой собственный метод toString() таким образом, что он будет перебирать элементыи распечатывайте их содержимое любым удобным для вас способом.

  • Создайте список с использованием шаблонов, используя что-то вроде этого: List<MyClass> myList = new ArrayList<MyClass>();....В данном случае MyClass - это класс, который я описал в пункте 1. Это позволит вам создать безопасную структуру типов, в которой не требуется выполнять приведение типов, что сделает ваш код более чистым и, вероятно, будет работать немного быстрее.

Видя, что вы можете сказать, что элементы могут содержать список строк различной длины, вы можете сделать что-то вроде этого:

public class MyClass
{
    private List<String> arrayList1;...
    private String[] myArray;...

    public MyClass(List<String> list1, ..., String[] myArray)
    {
        this.arrayList1 = list1;
        this.myArray = myArray;
        ...
    }

    ...
    @Override
    public String toString()
    {
        StringBuilder sb = new StringBuilder();
        //iterate adding your list contents to your string builder.
        return sb.toString();
    }
}

Добавление ваших элементов будет выглядеть примерно так:это:

...
List<String> arrayList1 = ...;
arrayList1.add("...");...
String[] myArray = ...;

MyClass myClass = new MyClass(arrayList1, ..., myArray);
System.out.println(myClass.toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...