Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Java: Biểu diễn chuỗi nội dung sâu của mảng (Arrays.deepToString)

Phương thức Arrays.deepToString(Object[]) trả về biểu diễn chuỗi của nội dung sâu (deep contents) của mảng được chỉ định. Khác với Arrays.toString() chỉ in mảng 1 chiều, deepToString đệ quy in các mảng lồng nhau (nested arrays) bao gồm cả mảng đa chiều.

Ví dụ 1: Mảng 1 chiều đối tượng

import java.util.Arrays;

public class Demo {
    public static void main(String[] args) {
        Object[] ob = {"One", "Two", "Three", "Four"};
        
        System.out.println("Các phần tử mảng:");
        for (Object value : ob) {
            System.out.println("Value = " + value);
        }
        
        System.out.println("Biểu diễn chuỗi của mảng:");
        System.out.println(Arrays.deepToString(ob));
    }
}

Kết quả

Các phần tử mảng:
Value = One
Value = Two
Value = Three
Value = Four
Biểu diễn chuỗi của mảng:
[One, Two, Three, Four]

Ví dụ 2: Mảng 2 chiều (ma trận)

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

Kết quả

[[10, 20, 30], [40, 50, 75], [100, 150, 200]]

Ví dụ 3: Mảng lồng nhau phức tạp

import java.util.Arrays;

public class Demo {
    public static void main(String[] args) {
        Object[] complex = {
            "String",
            new int[]{1, 2, 3},
            new Object[]{"nested", new double[]{1.1, 2.2}},
            null
        };
        
        System.out.println(Arrays.deepToString(complex));
    }
}

Kết quả

[String, [1, 2, 3], [nested, [1.1, 2.2]], null]

So sánh: toString() vs deepToString()

int[][] matrix = {{1, 2}, {3, 4}};

System.out.println(Arrays.toString(matrix));
// Output: [[I@15db9742, [I@6d06d69c]  (hashcode của mảng con)

System.out.println(Arrays.deepToString(matrix));
// Output: [[1, 2], [3, 4]]  (nội dung thực)
Phương thứcDùng choXử lý mảng lồng nhau
Arrays.toString()Mảng 1 chiều (primitive hoặc object)Không (in hashcode)
Arrays.deepToString()Mảng đa chiều, mảng lồng nhau, mảng Object chứa mảngCó (đệ quy)

Lưu ý

  • deepToString chỉ hoạt động với mảng kiểu Object[] (bao gồm mảng primitive đa chiều vì int[][] là Object[]).
  • Nếu mảng chứa tự tham chiếu (circular reference), sẽ ném StackOverflowError.
  • Trả về "null" nếu tham số là null.