如何从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
。 这意味着即使添加了ArrayList
, main.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
如果您不能或不想使用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的长度会改变运行时间。
祝好运 !!!