如何从2d arraylist获得价值

时间:2014-10-02 03:30:46

标签: java arraylist

我的arraylists名为sub和main,

ArrayList main = new ArrayList();

ArrayList sub=new ArrayList();

我向sub添加值,然后将sub添加到main。

示例;

 sub.add(1);
 sub.add(2);
 main.add(sub);

现在我想获得sub

中的所有值
 so i used following one but .get(j) gives me the error get >> canot find symbol

for (int i=0;i<main.size();i++) {
       System.out.println();

       for (int j=0;j<sub().size();j++) {
            System.out.print(main.get(i).get(j));//error line
       }
}

如何获得主要arraylist

的子数组中的所有值

3 个答案:

答案 0 :(得分:3)

将变量声明为

ArrayList main;

此列表包含Object个。这意味着即使您添加main.get(i)Object也只会返回ArrayList。这就是您收到编译器错误的原因:Object没有名为get()的方法。

要解决此问题,您需要使用泛型:

ArrayList<List<Integer>> main = new ArrayList<>();

ArrayList<Integer> sub=new ArrayList<>();

现在get()将返回List<Integer>,其get()方法,因此编译错误将消失。

答案 1 :(得分:2)

泛型可能是你的朋友:

ArrayList<ArrayList<Object>> main = new ArrayList<ArrayList<Object>>(); // or new ArrayList<>(); in Java 7+
ArrayList<Object> sub = new ArrayList<Object>(); // or new ArrayList<>();

如果您不能或不想使用泛型,解决方法是首先将表达式main.get(i)强制转换为ArrayList

System.out.println(((ArrayList) main.get(i)).get(j));

答案 2 :(得分:1)

完成以下代码

public class ArrayListDemo {

  public static void main(String[] args) {

      List<List<Integer>> main = new ArrayList<>();
      List<Integer> sub = new ArrayList<>();

      sub.add(1);
      sub.add(2);
      main.add(sub);

      //If you want to get values in sub array list
      for(int i = 0; i < 1; i++){
          List<Integer> arr = main.get(i);
          for(Integer val : arr) System.out.println(val + "");
      }

      //If you want to print all values
      for(List<Integer> list : main){
          for(Integer val : list) System.out.println(val + "");
      }

  }

}

在上面的代码中,我声明了一个ArrayList(main)来保存所有具有Integer值的Array。我还声明了另一个ArrayList(sub)以保留所有Integer值。 我曾经使用过ArrayList数据结构,因为List的长度会改变 运行。

祝你好运!!!