JavaのArrays.deepToString()で配列の深い内容を文字列として返す方法
Javaでは、java.util.Arraysクラスに含まれるdeepToString()メソッドを使用することで、指定した配列の深い内容(ネストされた要素まで)を文字列表現として取得できます。
通常のtoString()やArrays.toString()は多次元配列の中身まで正しく表示できませんが、deepToString()は入れ子になった配列も再帰的に処理し、人間が読みやすい形式で出力してくれるのが特徴です。
サンプルコード1:Object型配列の場合
まず、Object型の配列に対してdeepToString()を使用する基本的な例を見てみましょう。
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
Object[] ob = {"One", "Two", "Three", "Four"};
System.out.println("配列の要素...");
for (Object value : ob) {
System.out.println("Value = " + value);
}
System.out.println("配列の文字列表現:");
System.out.println(Arrays.deepToString(ob));
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
配列の要素... Value = One Value = Two Value = Three Value = Four 配列の文字列表現: [One, Two, Three, Four]
サンプルコード2:2次元配列の場合
次に、2次元のint型配列(ネストされた配列)に対してdeepToString()を使用した例です。多次元配列では、このメソッドの真価が発揮されます。
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
int[][] arr = new int[3][3];
arr[0][0] = 10;
arr[0][1] = 20;
arr[0][2] = 30;
arr[1][0] = 40;
arr[1][1] = 50;
arr[1][2] = 75;
arr[2][0] = 100;
arr[2][1] = 150;
arr[2][2] = 200;
System.out.println(Arrays.deepToString(arr));
}
}実行結果
実行すると、各内部配列が角括弧で囲まれた形式で出力されます。
[[10, 20, 30], [40, 50, 75], [100, 150, 200]]
deepToString()とtoString()の違い
なお、通常のArrays.toString()を2次元配列に使用すると、内部配列の参照先(ハッシュコードなど)が表示されるだけで、実際の値は確認できません。デバッグ時やログ出力時に配列の中身を正確に把握したい場合は、Arrays.deepToString()を使うことをおすすめします。
-
Python・NumPyのsctype2char()でスカラーdtypeの文字列表現を取得する方法
PythonのNumPyでは、sctype2char()メソッドを使うことで、スカラーdtype(データ型)に対応する文字列表現を取得できます。第1引数がスカラーdtypeの場合、それに対応する文字コードがそのまま返されます。また、オブジェクトを渡した場合には、sctype2char()がそのオブジェクトのスカラー型を推論し、対応する文字を返してくれます。この機能は、データ型の確認や動的な型処理を行いたい場面で非常に便利です。sctype2char()の基本的な使い方1. ライブラリのインポートまず、必要なライブラリをインポートします。import numpy as np2. スカラー型の文字
-
Python・NumPyで文字列配列の各要素の長さを取得する方法
文字列配列の各要素の長さを要素ごとに取得したい場合は、PythonのNumPyが提供する numpy.char.str_len() メソッドを使用します。このメソッドは、各文字列の長さを格納した整数型の出力配列を返します。実行手順まず、必要なライブラリをインポートします。import numpy as np次に、1次元の文字列配列を作成します。arr = np.array([Amy, Scarlett, Katie, Brad, Tom])作成した配列を表示してみましょう。print(Array...\n,arr)配列のデータ型を確認します。print(\nArray datatype...\