如何从二维ArrayList中获取值。

3
我有两个ArrayList,一个叫做sub,另一个叫做main。
ArrayList main = new ArrayList();

ArrayList sub=new ArrayList();

我将价值添加到子项中,然后将子项添加到主项中。
例如:
 sub.add(1);
 sub.add(2);
 main.add(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
       }
}

如何获取主数组列表中子数组内的所有值?
3个回答

3

当你声明一个变量时

ArrayList main;

这个列表保存了 Object 对象。这意味着,即使你添加了 ArrayListmain.get(i) 仍然只会返回一个 Object,这就是为什么你会得到编译器错误: Object 没有名为 get() 的方法。

要解决这个问题,你需要使用泛型:

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

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

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

ArrayList<List<Integer>> main = new ArrayList<>(); 这行代码给我报错了类型List不接受参数 - Piumi Wandana
@programingbitch 确保你的代码顶部有 import java.util.List,而不是其他名称为 List 的类。 - Code-Apprentice

3

泛型可能是你的朋友:

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));

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),用于保存所有具有整数值的数组。我还声明了另一个ArrayList(sub),用于保存所有整数值。 我使用了ArrayList数据结构,因为列表的长度会在运行时发生变化。
祝好运!!!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接