2013-08-31 3 views
1

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

Это мой код для создания массивов.

public ArrayList SGenresMaster = new ArrayList(new ArrayList()); 
    public ArrayList S1Genres = new ArrayList(); 
    public ArrayList S2Genres = new ArrayList(); 
    public ArrayList S3Genres = new ArrayList();   


    public void accessArrays(){ 

    SGenresMaster.add(S1Genres); 
    SGenresMaster.add(S2Genres); 
    SGenresMaster.add(S3Genres); 

    } 

В принципе, мне нужно иметь доступ к любому индексу S1Genres, используя SgenresMaster.

До сих пор мне удалось получить данные как длинную строку, поэтому я решил опубликовать свой текущий метод получения необходимых мне данных, поскольку я думал, что это, вероятно, заставит профессионала съеживаться/смеяться ,

createarray(SGenresMaster.get(i).toString()); 

    public ArrayList createarray(String string){ 

    String sentence = string; 
    String[] words = sentence.split(", "); 
    ArrayList temp = new ArrayList(); 
    int b = 0; 
    for (String word : words) 
    { 
     if (b == 0){ 
      //Delete First bracket 
      temp.add(word.substring(1,word.length())); 
      System.out.println("First Word: " + temp); 
     } 
     else{ 
      temp.add(word.substring(0,word.length())); 
      System.out.println("Middle Word: " + temp); 
     } 
     b++; 

    } 
    //Delete last bracket 
    String h = String.valueOf(temp.get(temp.size() - 1)); 
    temp.add(h.substring(0,h.length() - 1)); 
    temp.remove(temp.size() - 2); 


    System.out.println("final:" + temp); 

    return temp; 
} 
+1

Я думаю, что ваша основная проблема с использованием исходных списков массивов, использовать обозначения <>, чтобы указать, что они содержат –

+0

Действительно, есть причина, по которой вы не используете Java-дженерики? – hyde

+0

Никакой причины, кроме незнания, мне нужно. Приветствия за помощь. –

ответ

2

Использование сырья общего типа является bad practice. Таким образом вы теряете все преимущества дженериков.

Тем не менее, для иллюстрации, если ваши подсписки состоят из строк:

 ArrayList<List<String>> SGenresMaster = new ArrayList<List<String>>(); 
     ArrayList<String> S1Genres = new ArrayList<String>(); 
     ArrayList<String> S2Genres = new ArrayList<String>(); 
     ArrayList<String> S3Genres = new ArrayList<String>(); 

     SGenresMaster.add(S1Genres); 
     SGenresMaster.add(S2Genres); 
     SGenresMaster.add(S3Genres); 


    SGenresMaster.get(0).get(0); //gets the first element of S1Generes 
+0

Прекрасное спасибо, я знал, что есть действительно простой способ сделать это –

+0

Не должно быть или подобное с обеих сторон или <> обозначение в java 7. Хотя странно мой компилятор кажется прекрасным с ним –

+0

@RichardTingle Вы правы. Но это не ошибка компиляции, хотя большинство компиляторов генерируют предупреждения. Исправлено для ясности. – rocketboy

0

Я надеюсь, что ваш получил свой вопрос прямо:

for(ArrayList<String> arr: SGenresMaster){ 
    //arr can be any array from SGenresMaster 
    for(String s : arr){ 
     //do something 
    } 

} 

или

SGenresMaster.get(index).get(someOtherIndex); 
Смежные вопросы