如何从2d arraylist获得价值

我有名为sub和main的arraylists,

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的子arrays中的所有值

将变量声明为

 ArrayList main; 

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

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

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

现在get()将返回一个带有get()方法的List ,因此编译器错误将消失。

generics可能是你的朋友:

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

如果您不能或不想使用generics,那么解决方案是首先将表达式main.get(i)转换为ArrayList

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

浏览以下代码

 public class ArrayListDemo { public static void main(String[] args) { List> main = new ArrayList<>(); List 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 arr = main.get(i); for(Integer val : arr) System.out.println(val + ""); } //If you want to print all values for(List list : main){ for(Integer val : list) System.out.println(val + ""); } } 

}

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

祝好运 !!!