簡體   English   中英

如何從2D arraylist獲得價值

[英]how to get value from 2d arraylist

我有名為sub和main的arraylist,

ArrayList main = new ArrayList();

ArrayList sub=new ArrayList();

我將值添加到sub,然后將sub添加到main。

例;

 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
       }
}

我如何獲取主arraylist的子數組內的所有值

當您將變量聲明為

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<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)表達式main.get(i)轉換為ArrayList

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

通過以下代碼

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(主要)以保留所有具有Integer值的Array。 我也聲明了另一個ArrayList(子)來保留所有Integer值。 我曾經使用ArrayList數據結構,因為List的長度會改變運行時間。

祝好運 !!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM