11/08/2018, 19:07

Mảng (Array) trong java

Object cloning trong java Thông thường, mảng (array) là một tập hợp các phần tử có cùng kiểu được lưu trữ gần nhau trong bộ nhớ. Mảng trong java là một đối tượng chứa các phần tử có kiểu dữ liệu giống nhau. Mảng là một cấu trúc dữ liệu nơi lưu trữ các phần tử giống nhau. Với ...

Object cloning trong java

Thông thường, mảng (array) là một tập hợp các phần tử có cùng kiểu được lưu trữ gần nhau trong bộ nhớ.

Mảng trong java là một đối tượng chứa các phần tử có kiểu dữ liệu giống nhau. Mảng là một cấu trúc dữ liệu nơi lưu trữ các phần tử giống nhau. Với mảng trong java chúng ta chỉ có thể lưu trữ một tập các phần tử có số lượng phần tử cố định.

Mảng trong java lưu các phần tử theo chỉ số, chỉ số của phần tử đầu tiên là 0.

array trong java

Lợi ích của mảng trong java

  • Tối ưu code: Mảng giúp lấy hoặc sắp xếp dữ liệu dễ dàng.
  • Truy cập ngẫu nhiên: Chúng ta có thể lấy dữ liệu được lưu trữ ở bất kỳ vị trí nào thông qua chỉ số.

Sự bất tiện của mảng trong java

  • Giới hạn kích thước: Chúng ta phải khởi tạo kích thước của mảng trong java trước khi sử dụng. Không thể thay đổi được kích thước của nó lúc runtime. Collection framework được sử dụng trong java để giải quyết vấn đề này.

Các kiểu của mảng trong java

Có hai kiểu mảng trong java

  • Mảng một chiều
  • Mảng đa chiều

Mảng một chiều trong java

Các cách khai báo mảng một chiều trong java

dataType[] arr;
dataType []arr; 
dataType arr[];  

Khởi tạo mảng một chiều trong java

arrayRefVar=new datatype[size];  

Ví dụ về mảng một chiều trong java

Ví dụ đơn giản về khai báo, khởi tạo và duyệt các phần tử của mảng.

public class TestArray {
    public static void main(String args[]) {
        // khai báo và khởi tạo mảng
        int a[] = new int[3];
        a[0] = 10; // gán giá trị
        a[1] = 20;
        a[2] = 50;

        // in mảng ra màn hình
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
    }
}

Kết quả:

10 20 50 

Khai báo, khởi tạo mảng một chiều bằng mảng nặc danh

Ví dụ:

public class TestArray1 {
    public static void main(String args[]) {
        // gán mảng nặc danh cho mảng a
        int a[] = { 33, 3, 4, 5 }; 

        // in mảng a ra màn hình
        for (int i = 0; i < a.length; i++)
            System.out.print(a[i] + " ");

    }
}

Kết quả:

33 3 4 5 

Truyền mảng vào phương thức trong java

Chúng ta có thể truyền mảng vào phương thức, điều này giúp tái sử dụng code logic để xử lý mảng bất kỳ. Ví dụ:

public class TestArray2 {
    static void min(int arr[]) {
        int min = arr[0];
        for (int i = 1; i < arr.length; i++)
            if (min > arr[i]) {
                min = arr[i];
            }
        System.out.println(min);
    }

    public static void main(String args[]) {
        int a[] = { 33, 3, 4, 5 };
        min(a);// truyền mảng tới phương thức
    }
}

Kết quả:

3

Mảng đa chiều trong java

Trong TH này, dữ liệu được lưu trữ theo hàng và cột theo chỉ mục (hay còn gọi là dạng ma trận).

Khai báo mảng đa chiều trong java

dataType[][] arrayRefVar;
dataType [][]arrayRefVar;
dataType arrayRefVar[][];
dataType []arrayRefVar[];   

Ví dụ về khởi tạo và gán giá trị cho mảng đa chiều trong java

int[][] arr=new int[3][3]; // 3 hàng 3 cột
arr[0][0]=1;  
arr[0][1]=2;  
arr[0][2]=3;  
arr[1][0]=4;  
arr[1][1]=5;  
arr[1][2]=6;  
arr[2][0]=7;  
arr[2][1]=8;  
arr[2][2]=9;  

Ví dụ về mảng đa chiều trong java

public class TestArray3 {
    public static void main(String args[]) {

        // khai báo và khởi tạo mảng 2 chiều
        int arr[][] = { { 1, 2, 3 }, { 2, 4, 5 }, { 4, 4, 5 } };

        // in mảng 2 chiều r màn hình
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }

    }
}

Kết quả:

1 2 3 
2 4 5 
4 4 5 

Sao chép một mảng trong java

Chúng ta có thể sao chép một mảng tới mảng khác bởi phương thức arraycopy của lớp System. Cú pháp của phương thức arraycopy:

public static void arraycopy(  
Object src, int srcPos,Object dest, int destPos, int length  
)  

Ví dụ về sao chép mảng trong java

public class TestArrayCopyDemo {
    public static void main(String[] args) {
        char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 
                'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' };
        char[] copyTo = new char[7];

        System.arraycopy(copyFrom, 2, copyTo, 0, 7);
        System.out.println(new String(copyTo));
    }
}

Kết quả:

caffein
Object cloning trong java

:

  • Sự khác nhau giữa Array với ArrayList
  • ArrayList trong java
  • Sắp xếp các phần tử của List
  • Sự khác nhau giữa ArrayList và Vector
  • TreeSet trong java
  • HashSet trong java
  • HashMap trong java
  • Sự khác nhau giữa HashMap và Hashtable
  • List câu hỏi phỏng vấn Java Collection
0