2

当我在 Java 中使用数组列表时遇到一个小问题。本质上,我希望将数组存储在数组列表中。我知道数组列表可以保存对象,所以应该是可能的,但我不确定如何。

在大多数情况下,我的数组列表(从文件中解析)只是将一个字符作为字符串保存,但有时它会包含一系列字符,如下所示:

    myarray
0    a
1    a
2    d
3    g
4    d
5    f,s,t
6    r

大多数时候,我唯一关心的位于位置 5 的字符串中的字符是 f,但有时我可能还需要查看 s 或 t。我对此的解决方案是制作一个这样的数组:

      subarray
0     f 
1     s
2     t

并将子数组存储在位置 5 中。

    myarray
0    a
1    a
2    d
3    g
4    d
5    subarray[f,s,t]
6    r

我试图用这段代码做到这一点:

 //for the length of the arraylist
 for(int al = 0; al < myarray.size(); al++){
      //check the size of the string
      String value = myarray.get(al);
      int strsz = value.length();
      prse = value.split(dlmcma);
      //if it is bigger than 1 then use a subarray
      if(strsz > 1){
          subarray[0] = prse[0];
          subarray[1] = prse[1];
          subarray[2] = prse[2];
      }
      //set subarray to the location of the string that was too long
      //this is where it all goes horribly wrong
      alt4.set(al, subarray[]);
  }

这不是我想要的方式。它不允许我 .set(int, array)。它只允许 .set(int, string)。有人有建议吗?

4

5 回答 5

2

最简单的方法是使用 ArrayList 的 ArrayList。

ArrayList<ArrayList<String>> alt4 = new ArrayList<ArrayList<String>>();

但是,这可能不是最好的解决方案。您可能需要重新考虑您的数据模型并寻找更好的解决方案。

于 2012-10-17T21:05:32.250 回答
0

只需更改alt4.set(al, subarray[]);

         alt4.add(subarray);

我假设alt4是另一个定义ArrayList<String[]>的 . 如果不是,请定义如下:

        List<String[]> alt4= new ArrayList<String[]>();

或者

        ArrayList<String[]> alt4= new ArrayList<String[]>();
于 2012-10-17T21:05:46.140 回答
0

我的猜测是您将 alt4 声明为List<String>,这就是为什么它不允许您将 String 数组设置为列表元素的原因。您应该将其声明为List<String[]>and is 每个元素只是单数,只需将其设置为 String[] 数组的第 0 个元素,然后再将其添加到列表中。

于 2012-10-17T21:07:05.760 回答
0

你可以切换到:

List<List<Character>> alt4 = new ArrayList<List<Character>>();  
于 2012-10-17T21:08:55.660 回答
0

可能这就是你想要得到的

public class Tester {

    List<String> myArrays = Arrays.asList(new String[] { "a", "a", "d", "g", "d", "f,s,t", "r" });

    ArrayList<ArrayList<String>> alt4 = new ArrayList<ArrayList<String>>();

    private void manageArray() {
        // for the length of the arraylist
        ArrayList<String> subarray = new ArrayList<String>();
        for(int al = 0; al < myArrays.size(); al++) {
            // check the size of the string
            String value = myArrays.get(al);
            int strsz = value.length();
            String prse[] = value.split(",");
            // if it is bigger than 1 then use a subarray
            if(strsz > 1) {
                for(String string : prse) {
                    subarray.add(string);
                }
            }
            // set subarray to the location of the string that was too long
            // this is where it all goes horribly wrong
            alt4.set(al, subarray);
        }

    }
}
于 2012-10-17T21:25:06.190 回答