在arraylist中存储对象

时间:2012-10-17 20:59:31

标签: java arraylist multidimensional-array

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

在大多数情况下,我的arraylist(从文件中解析)只是将一个字符作为字符串,但偶尔会有一系列字符,如下所示:

    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)。有没有人有建议?

5 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

即可
         alt4.add(subarray);

我认为alt4是另一个定义的ArrayList<String[]>。如果没有,请按以下方式定义:

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您可以切换到:

List<List<Character>> alt4 = new ArrayList<List<Character>>();  

答案 4 :(得分: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);
        }

    }
}