ArrayList. Доступ к элементу. Не всё так просто

579
29 декабря 2016, 06:58

Столкнулся с такой проблемой, как получение данных из листа. Казалось бы что всё просто, но вот не совсем. Вот смотрите:

ArrayList<String> a = new ArrayList<>();
a.add("1");
a.add("2");
a.add("3");
ArrayList<String> b = new ArrayList<>();
b.add(a.toString());
String splitStr = b.get(0);
System.out.println(splitStr);

Получаю данные такого вида:

[1, 2, 3]

Так вот собственно вопрос: Как получить доступ к этим элементам? Получился двумерный массив. Но не пойму как добраться до него? Пробовал вот так:

for(String getSplit : splitStr.split("([),(])")){System.out.println("str   "+getSplit);}

Но остаются квадратные скобки.

str [1
str  2
str  3]

Т.е делаю что-то не так. Пробовал через regex

  Pattern pat = Pattern.compile("([),(])");
  Matcher mat = pat.matcher(splitStr);
  while(mat.find()) 
  {
    System.out.println("str "+mat.group());
  }

Получаю запятые. Есть ли стандартные методы какие-то? Что-бы не изобретать колесо.

В общем получилось вот так:

    ArrayList<String> a = new ArrayList<>();
    a.add("1");
    a.add("2");
    a.add("3");
    ArrayList<ArrayList> b = new ArrayList<>();
    b.add(a);
   for(int q =0; q < b.size(); q++ )
   {
       for(int t=0; t< a.size(); t++)
       {
       System.out.println( b.get(q).get(t));
       } 
   }

Всем спасибо за внимание.

Answer 1

`Может вот так будете использовать данную схему?

    ArrayList<ArrayList<String>> arr2 = new ArrayList<>(); // один массив в другом массиве. 
    ArrayList<String> arr1 = new ArrayList<>();
    arr1.add("1");
    arr1.add("2");
    arr1.add("3");
    arr2.add(arr1);
    System.out.println(arr2.get(0).toString()); // будет [1, 2, 3]
    for (String s : arr2.get(0)) {
        System.out.println(s);
    }

вывод

[1, 2, 3]
1
2
3

квадратные скобки остаются, потому что в таком виде представляются элементы списка и не только. Обычно используется ClassName[element1 = value1, element2 = value2] или ClassName[value1,value2] , если в классе один тип данных, как в твоем случае.

READ ALSO
Как получить слово после знака &ldquo;?&rdquo;

Как получить слово после знака “?”

Как мне получить слово Izzume?

505
Главный поток медленнее дополнительного ? что делается в главном потоке андроид смартфона

Главный поток медленнее дополнительного ? что делается в главном потоке андроид смартфона

Вот игровой цикл, перед тем как рисовать, блокируем канвас, рисуем и потом разблокируем и видим кадрКак я понял принцип такой

449