2

基本的に、私は動的2d ArrayListを作成しています。2D ArrayListを通常の配列にするJava

private ArrayList<char[]> myArray; 

このコードはループで実行されます。 「同じ長さ」のいくつかのランダムな文字列は、配列内のすべての文字を に格納するために与えられます。

しばらく(体は)すべての文字がArrayListの中に挿入されるので、後

char[] temp = myString.toCharArray(); 
myArray.add(temp); 

、私は通常の配列にmyarrayのを変換したいです。 (なぜ将来的に有用であることが起こっているので?)そして、私は、私はここにそれが間違ってやっていると思う:

charArray = (char[][]) myArray.toArray(); 
//declaration of 'charArray' is already done at the start of the class. 

だから、問題は、私はちょうどチェックするために全体の「charArray」を印刷しようとする場合、または任意の要素に「java.lang.NullPointerException」というエラーが発生しました。

2d ArrayListを通常の配列に変換するにはどうすればよいですか?私は多くの異なる情報源を試しましたが、助けにはなりません

ありがとうございます。

+0

はい@macduff、すべての文字列は、同じサイズのものです。 – jbchichoko

答えて

4

最後にchar[]またはchar[][]を使用するかどうかはわかりません。両方のオプション以下を参照してください。

public static void main(String... args) throws Exception { 
    List<char[]> myArray = new ArrayList<char[]>(); 
    myArray.add("string1".toCharArray()); 
    myArray.add("string2".toCharArray()); 
    myArray.add("string3".toCharArray()); 

    char[][] charArray2D = myArray.toArray(new char[0][0]); 
    System.out.println(charArray2D.length); //prints 3 

    StringBuilder s = new StringBuilder(); 
    for (char[] c : myArray) { 
     s.append(String.copyValueOf(c)); 
    } 
    char[] charArray1D = s.toString().toCharArray(); 
    System.out.println(charArray1D.length); //prints 21 
} 
+0

ああありがとうございます。 ".toArray(new char [0] [0])"を追加しました。しかし、 "新しいchar [0] [0]"が解決策にどのように影響しているか説明できますか? newbie here :) – jbchichoko

+0

ここでjavadocを確認してください:http://docs.oracle.com/javase/6/docs/api/java/util/List.html#toArray%28T[]%29 – assylias

2

このような何か:

public static void main(String[] args) { 
    List<char []> list = new ArrayList<char []>(); 
    list.add("hello".toCharArray()); 
    list.add("world !".toCharArray()); 
    char[][] xss = list.toArray(new char[0][0]); 
    for (char[] xs : xss) { 
     System.out.println(Arrays.toString(xs)); 
    } 
} 

出力:

[h, e, l, l, o] 
[w, o, r, l, d, , !] 
関連する問題