11/08/2018, 19:09

Duyệt mảng trong java

Object cloning trong java Duyệt mảng trong java là quá trình truy cập từng phần tử của một mảng . Duyêt mảng thường được thực hiện bắt đầu với phần tử đầu tiên và cho đến khi kết thúc mảng. Tuy nhiên, nó cũng có thể di chuyển ngược hoặc bỏ qua các phần tử. Ở đây, chúng ta sẽ tập ...

Object cloning trong java

Duyệt mảng trong java là quá trình truy cập từng phần tử của một mảng. Duyêt mảng thường được thực hiện bắt đầu với phần tử đầu tiên và cho đến khi kết thúc mảng. Tuy nhiên, nó cũng có thể di chuyển ngược hoặc bỏ qua các phần tử. Ở đây, chúng ta sẽ tập trung vào việc duyệt một mảng từ đầu đến cuối bằng cách sử dụng hai kỹ thuật khác nhau:

  • Sử dụng vòng lặp for đơn giản.
  • Sử dụng câu lệnh for-each.

Chúng ta sẽ sử dụng mảng ages, được khai báo như sau, để minh họa cách duyệt qua một mảng:

static final int SIZE = 5;
int[] ages = new int[SIZE];

Chúng ta sẽ sử dụng mảng trên trong các ví dụ sau:

Sử dụng vòng lặp đơn giản

Bất kỳ vòng lặp đơn giản nào cũng có thể được sử dụng để duyệt các phần tử của một mảng. Ở đây, chúng ta sẽ sử dụng vòng lặp for và vòng lặp while. Đầu tiên, chúng ta sẽ kiểm tra vòng lặp for. Trong trình duyệt mảng, sử dụng một biến số nguyên bắt đầu từ 0 và tiến tới độ dài của mảng trừ đi một:

for(int i = 0; i < ages.length; i++) {
    ages[i] = 5;
}

Sử dụng vòng lặp while, lưu ý biến i được khai báo bên ngoài vòng lặp:

int i = 0;
while(i < ages.length) {
    ages[i++] = 5;
}

Vòng lặp for thường thích hợp hơn vì chúng ta biết độ dài của mảng và nó đơn giản hơn cho vấn đề này. Đối với cả hai ví dụ, chúng ta đã sử dụng thuộc tính độ dài của mảng để điều khiển vòng lặp. Nó thích hợp hơn khi sử dụng một biến cố định có thể đã được sử dụng để khai báo mảng. Hãy xem xét tình huống định nghĩa lại mảng sau đây:

int[] ages = new int[SIZE];
...
for(int i = 0; i < SIZE; i++) {
    ages[i] = 5;
}
// dinh nghia lai mang
int[] ages = new int[DIFFERENT_SIZE];
...
for(int i = 0; i < SIZE; i++) {
    ages[i] = 5;
}

Vòng lặp thứ hai sẽ không thực thi đúng bởi vì chúng ta quên thay đổi hằng số SIZE và thậm chí có thể ném ra một ngoại lệ nếu mảng mới có kích thước nhỏ hơn SIZE. Nếu chúng ta sử dụng thuộc tính length thay vào đó, sẽ không có vấn đề gì. Lưu ý rằng vòng lặp for, như được viết, khai báo biến i trong vòng lặp for. Điều này hạn chế quyền truy cập vào biến chỉ cho các câu lệnh đó trong vòng lặp for. Trong ví dụ vòng lặp while, chúng ta đã khai báo i bên ngoài vòng lặp làm cho nó có thể truy cập bên trong và bên ngoài vòng lặp while. Chúng ta có thể viết lại vòng lặp for để sử dụng biến i bên ngoài. Tuy nhiên, cách khai báo như trên được coi là hình thức tốt hơn để hạn chế quyền truy cập vào một biến chỉ cho những câu lệnh cần truy cập.

Ví dụ sử dụng vòng lặp for và while để duyệt mảng trong java

package vn.viettuts;

public class Duyetmang1 {
    private static final int SIZE = 5;

    public static void main(String[] args) {
        int i;
        int[] ages = new int[SIZE];
        // khoi tao mang
        for (i = 0; i < SIZE; i++) {
            ages[i] = 5 + i;
        }
        // duyet cac phan tu cua mang bang vong lap for
        System.out.println("Su dung vong lap for: ");
        for (i = 0; i < SIZE; i++) {
            System.out.print(ages[i] + " ");
        }
        // duyet cac phan tu cua mang bang vong lap while
        System.out.println("
Su dung vong lap while: ");
        i = 0;
        while (i < SIZE) {
            System.out.print(ages[i] + " ");
            i++;
        }
    }
}

Kết quả:

Su dung vong lap for: 
5 6 7 8 9 
Su dung vong lap while: 
5 6 7 8 9 

Sử dụng câu lệnh for-each

Cú pháp:

for (ClassName element : array) {
    // element là phần tử của mảng
}

Ví dụ sử dụng lệnh for-each để duyệt mảng trong java

package vn.viettuts;

public class Duyetmang2 {
    private static final int SIZE = 5;

    public static void main(String[] args) {
        int i;
        int[] ages = new int[SIZE];
        // khoi tao mang
        for (i = 0; i < SIZE; i++) {
            ages[i] = 5 + i;
        }
        // duyet cac phan tu cua mang bang vong lap for
        System.out.println("Su dung vong lap for-each: ");
        for (int age : ages) {
            System.out.print(age + " ");
        }
    }
}

Kết quả:

Su dung vong lap for-each: 
5 6 7 8 9 
Object cloning trong java
0