2015-10-23 36 views
-1

我想創建一個常量ArrayList,但我保持空結果返回。創建常量Arraylist返回空

請評論這是正確的方式來聲明靜態最終ArrayList?

public final class Constants { 
    public static ArrayList<String[]> points = new ArrayList<String[]>(); 
    { 
     points.add(new String[] {"A","5.42420782","100.2680779" }); 
     points.add(new String[] {"B","5.42253496","100.26634007" }); 
     points.add(new String[] {"C","5.4196543","100.2645124" }); 
     points.add(new String[] {"D", "5.41808928","100.26244618" }); 
    } 

    public static final List<ArrayList<String[]>> fix_points = Collections.unmodifiableList(Arrays.asList(points)); 
} 

試圖用循環返回。

for(ArrayList<String[]> item : Constants.fix_points) { 
    System.out.println(item); 
} 

打印顯示爲空[]。

回答

4

您需要了解啓動塊和靜態塊之間的區別。

{ 
     points.add(new String[] {"A","5.42420782","100.2680779" }); 
     points.add(new String[] {"B","5.42253496","100.26634007" }); 
     points.add(new String[] {"C","5.4196543","100.2645124" }); 
     points.add(new String[] {"D", "5.41808928","100.26244618" }); 
    } 

當您創建一個常量實例時調用。

static { 
     points.add(new String[] {"A","5.42420782","100.2680779" }); 
     points.add(new String[] {"B","5.42253496","100.26634007" }); 
     points.add(new String[] {"C","5.4196543","100.2645124" }); 
     points.add(new String[] {"D", "5.41808928","100.26244618" }); 
    } 

呼叫時的類加載。

您需要後面的塊是靜態塊。

0

我不知道爲什麼你需要一個List<ArrayList<String[]>>,但產生的輸出應該是這樣的(String[].toString()

[[Ljava.lang.String;@29ce4d9c, [Ljava.lang.String;@b24c3a5, [Ljava.lang.String;@28e1c37a, [Ljava.lang.String;@1c0b972b] 

你可以用

for(ArrayList<String[]> item : Constants.fix_points) { 
    for (String[] i : item) { 
     Log.d(getClass().getSimpleName(), " " + i[0]+ " " + i [1]); 
    } 
} 
1

打印的確切內容替換下面一行

List<ArrayList<String[]>> fix_points = Collections.unmodifiableList(Arrays.asList(points)); 

final List<String[]> fix_points = Collections.unmodifiableList(points);

final List<String[]> fix_points = Collections.unmodifiableList(points); 
    for(String[] item : fix_points) { 
     for(int i=0;i<item.length;i++) 
      System.out.println(item[i]); 
} 
+1

謝謝,這個好多了 – Eric