1

我正在尝试从存储在 Arraylist 中的 Arraylist 访问数据。我确信有一种非常简单的方法可以做到这一点,我不想浪费任何人的时间,但我尝试了很多方法,似乎无法在任何地方找到答案。任何帮助将非常感激。

这是我创建数组的代码。

    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);

    }

基本上我需要能够使用 SgenresMaster 访问 S1Genres 的任何索引。

到目前为止,我只设法将数据作为长字符串取出,所以我想我会发布我当前获取所需数据的方法,因为我认为它可能会让专业人士在这里畏缩/大笑。

    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;
} 
4

2 回答 2

2

使用原始泛型类型是一种不好的做法。这样你就失去了泛型的所有优势。

也就是说,为了说明您的子列表是否由字符串组成:

        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
于 2013-08-31T18:25:25.700 回答
0

我希望你的问题是正确的:

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

}

或者

 SGenresMaster.get(index).get(someOtherIndex);
于 2013-08-31T18:25:03.863 回答