Computer >> Máy Tính >  >> Lập trình >> Java

ArrayList Java:Hướng dẫn cho người mới bắt đầu

Bạn có cảm thấy mệt mỏi khi phải khai báo kích thước của một mảng trước khi bạn có thể sử dụng nó không? Bạn không phải là người duy nhất, vì không phải lúc nào cũng thuận tiện khi phải xác định số lượng giá trị mà một mảng sẽ lưu trữ trước khi bạn có thể bắt đầu thêm giá trị vào mảng đó.

Đó là lúc người bạn hữu ích của chúng tôi, Java ArrayList, xuất hiện.

Trong hướng dẫn này, chúng ta sẽ nói về ArrayLists là gì, cách chúng hoạt động và cách chúng so sánh với các mảng truyền thống. Chúng tôi cũng sẽ giới thiệu cho các bạn các phương pháp quan trọng nhất mà bạn cần biết để làm việc hiệu quả với lớp ArrayList. Hãy bắt đầu!

ArrayList là gì?

ArrayList là một loại danh sách đặc biệt cho phép bạn tạo các mảng có thể thay đổi kích thước. Lớp ArrayList thực hiện giao diện Danh sách, được sử dụng để lưu trữ dữ liệu có thứ tự.

Khi bạn đang làm việc với một mảng trong Java, bạn phải khai báo kích thước của mảng đó trước khi bạn có thể lưu trữ các giá trị trong mảng đó. Thường xảy ra trường hợp bạn không biết mình muốn lưu trữ bao nhiêu giá trị trong một mảng trước khi khai báo, điều này dẫn đến một vấn đề.

Lớp ArrayList cho phép bạn xác định một mảng mà không cần cho biết nó có thể lưu trữ bao nhiêu giá trị. ArrayLists, đôi khi được gọi là dynamic arrays , có thể thay đổi dung lượng của chúng khi bạn thêm hoặc bớt các phần tử.

Cách tạo ArrayList

Hãy bắt đầu ở một nơi rõ ràng:khai báo ArrayList. Việc thiết lập một mảng hoàn toàn khác với cách bạn khai báo một mảng vì nó sử dụng giao diện Danh sách Java.

Mở tệp Java và dán mã sau vào lớp chính của bạn:

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

import java.util.ArrayList;
ArrayList<String> songs = new ArrayList<>();

Chúng tôi vừa tạo một danh sách mảng có tên là songs . String đề cập đến loại dữ liệu sẽ được lưu trữ trong mảng của chúng ta và ArrayList đề cập đến loại đối tượng mà chúng ta muốn tạo.

Chúng tôi phải nhập ArrayList vào mã của mình vì nó đến từ util của Java thư viện.

Cần lưu ý rằng bạn không thể tạo danh sách mảng bằng kiểu dữ liệu nguyên thủy. Ví dụ:nếu bạn muốn khai báo một mảng các số nguyên, bạn không thể sử dụng int nguyên thủy thể loại; bạn cần sử dụng lớp Integer.

Lưu ý rằng chúng tôi không phải chỉ định số lượng giá trị mà ArrayList của chúng tôi cần lưu trữ. Đó là bởi vì ArrayLists năng động.

Cách thêm phần tử vào ArrayList

Phương thức add () cho phép bạn thêm một phần tử vào danh sách của mình. Giả sử chúng tôi muốn thêm hai bài hát vào songs của mình danh sách mảng:Love Me Do và Help! (đều là của The Beatles).

Mở một tệp Java mới và viết mã sau:

import java.util.ArrayList;

class Main {
	public static void main(String[] args) {
ArrayList<String> songs = new ArrayList<>();

		songs.add("Love Me Do");
		songs.add("Help!");

		System.out.println("Songs: " + songs);
	}
}

Mã của chúng tôi trả về:Bài hát:[Love Me Do, Help!]

Giống như mảng, các mục trong ArrayList được cung cấp số chỉ mục của riêng họ. Điều này là do các mục trong ArrayList được sắp xếp theo thứ tự và các con số cho chương trình của chúng tôi biết thứ tự mà mỗi mục trong danh sách của chúng tôi sẽ xuất hiện. Nếu cần, bạn có thể chỉ định vị trí chỉ mục mà bạn muốn thêm một mục:

songs.add(0, “Love Me Do”);

Thao tác này sẽ thêm mục nhập “Love Me Do” ở vị trí chỉ mục 0 vào songs của chúng tôi danh sách.

Khởi tạo ArrayList

Khi bạn khai báo một mảng, bạn có thể khởi tạo nó trực tiếp bằng cách chỉ định các giá trị mà bạn muốn gán cho mảng đó. ArrayLists không hoạt động theo cách này. Bạn phải sử dụng một phương thức đặc biệt được gọi là asList () từ lớp Arrays để khởi tạo một ArrayList. asList() trả về một mảng dưới dạng danh sách có thể được đọc bởi lớp ArrayList.

Bạn có thể muốn khởi tạo ArrayList với các giá trị nếu bạn đã có một vài giá trị mà bạn muốn thêm vào danh sách của mình.

Bạn có thể sử dụng vòng lặp for để thêm từng mục riêng lẻ. Tuy nhiên, cách tiếp cận đó phức tạp hơn để thiết lập và kém hiệu quả hơn so với việc khởi tạo danh sách với các giá trị bằng asList() .

Hãy bắt đầu bằng cách nhập các thư viện mà chúng ta sẽ sử dụng trong mã của mình:

import java.util.ArrayList;
import java.util.Arrays;

Sau đó, chúng tôi sẽ viết một lớp khởi tạo các bài hát của chúng tôi ArrayList với hai giá trị:

class Main {
	public static void main(String[] args) {
		ArrayList<String> songs = new ArrayList(Arrays.asList("Love Me Do", "Help!"));
		System.out.println("Songs: " + songs);
	}
}

Trong mã này, chúng tôi đã khai báo một ArrayList có thể lưu trữ các giá trị chuỗi. Chúng tôi đã sử dụng asList () để hướng dẫn mã của chúng tôi khởi tạo danh sách mảng của chúng tôi với hai giá trị mặc định, chính là các bài hát của Beatles mà chúng tôi đã thêm trong ví dụ trước.

Lấy một mục từ ArrayList

Lớp ArrayList đi kèm với một phương thức tiện dụng được gọi là get() cho phép bạn truy cập các phần tử của danh sách mảng. Để sử dụng phương pháp này, bạn phải chỉ định vị trí chỉ mục của phần tử mà bạn muốn truy cập.

Hãy xem xét ví dụ này:

import java.util.ArrayList;

class Main {
	public static void main(String[] args) {
ArrayList<String> songs = new ArrayList<>();

		songs.add("Love Me Do");
		songs.add("Help!");

		System.out.println("Second song: " + songs.get(1));
	}
}

Trong mã này, chúng tôi đã tạo một danh sách mảng và thêm hai giá trị. Sau đó, chúng tôi đã sử dụng songs.get(1) để lấy bài hát ở vị trí chỉ mục 1 trong danh sách của chúng tôi. Mã của chúng tôi trả về:

Bài hát thứ hai:Help!

Cập nhật ArrayList

Cập nhật danh sách mảng dễ dàng như thêm các phần tử vào danh sách. Có một phương thức tích hợp được gọi là set() mà bạn có thể sử dụng để thay đổi giá trị được lưu trữ trong danh sách. Hãy xem xét đoạn mã sau:

import java.util.ArrayList;

class Main {
	public static void main(String[] args) {
ArrayList<String> songs = new ArrayList<>();

		songs.add("Love Me Do");
		songs.add("Help!");

		System.out.println("Songs: " + songs);

		songs.set(1, "Come Together");
		System.out.println("Songs: " + songs);
	}
}

Mã của chúng tôi trả về:

Bài hát:[Love Me Do, Help!]

Bài hát:[Love Me Do, Come Together]

Trong mã của mình, chúng tôi đã thêm hai giá trị - “Yêu tôi làm” và “Giúp đỡ!” - vào danh sách của chúng tôi. Sau đó, chúng tôi đã thay đổi mục có vị trí chỉ mục 1 thành “Đến với nhau”. Điều này thay thế "Trợ giúp!" với "Hãy đến với nhau" trong danh sách của chúng tôi. Khi chúng tôi in ra danh sách của mình ở cuối chương trình, chúng tôi có thể thấy rằng nó đã được sửa đổi.

Xóa một phần tử khỏi ArrayList

Các phần tử không nhất thiết phải ở trong ArrayList mãi mãi. Bạn có thể xóa một phần tử bằng cách sử dụng remove() bất cứ lúc nào. Thật là một tên phương thức dễ nhớ!

Hãy xem xét ví dụ này:

import java.util.ArrayList;

class Main {
	public static void main(String[] args) {
ArrayList<String> songs = new ArrayList<>();

		songs.add("Love Me Do");
		songs.add("Help!");

		System.out.println("Songs: " + songs);

		String removed = songs.remove(0);
		System.out.println("Songs: " + songs);
		System.out.println(removed);
	}
}

Trong ví dụ này, chúng tôi thêm hai mục vào danh sách mảng của chúng tôi. Sau đó, chúng tôi xóa mục có vị trí chỉ mục 0. Mã của chúng tôi trả về:

Bài hát:[Love Me Do, Help!]

Bài hát:[Help!]

Yêu tôi làm

Chúng tôi vừa xóa Love Me Do từ danh sách mảng của chúng tôi. remove() phương thức trả về tên của mục đã bị xóa, mà chúng tôi đã gán cho biến removed . Chúng tôi đã in giá trị của biến này ra bảng điều khiển ở cuối chương trình của chúng tôi.

Lặp lại qua ArrayList

Điều gì xảy ra nếu bạn muốn lặp qua ArrayList? Bạn có thể làm điều đó bằng cách sử dụng vòng lặp for hoặc vòng lặp for cho mỗi lần, tùy thuộc vào sở thích của bạn.

Giả sử chúng tôi muốn in tất cả các bài hát của The Beatles trong danh sách của mình ra bảng điều khiển, với mỗi giá trị xuất hiện trên một dòng mới. Chúng tôi có thể làm như vậy bằng cách sử dụng mã sau:

import java.util.ArrayList;

class Main {
	public static void main(String[] args) {
ArrayList<String> songs = new ArrayList<>();

		songs.add("Love Me Do");
		songs.add("Help!");

		for (int i = 0; i < songs.size(); i++) {
			System.out.println(songs.get(i));
		}
	}
}

Trong chương trình này, chúng tôi đã sử dụng vòng lặp for để lặp qua mọi mục trong danh sách mảng của chúng tôi. Đối với mỗi mục trong danh sách mảng, chúng tôi in nó ra bảng điều khiển trên dòng riêng của nó. Vòng lặp này tiếp tục cho đến khi mọi mục trong danh sách của chúng tôi đã được in ra bảng điều khiển.

Lưu ý rằng chúng tôi đã sử dụng một phương thức có tên là songs.size() trong chương trình này. Phương thức size () cho chúng ta biết có bao nhiêu giá trị được lưu trữ trong danh sách mảng của chúng ta.

Mã của chúng tôi trả về:

Yêu tôi làm

Giúp đỡ!

Tương tự, bạn có thể sử dụng vòng lặp for-each để lặp qua danh sách mảng. Điều này là do for-each loop hỗ trợ lặp qua bất kỳ đối tượng có thể lặp lại nào. Hãy xem xét ví dụ sau:

import java.util.ArrayList;

class Main {
	public static void main(String[] args) {
ArrayList<String> songs = new ArrayList<>();

		songs.add("Love Me Do");
		songs.add("Help!");

		for (String song : songs) {
			System.out.println(song);
		}
	}
}

Chương trình này rất giống nhau về cả cấu trúc và mục đích; nó in ra tất cả các giá trị trong songs của chúng tôi danh sách mảng vào bảng điều khiển. Sự khác biệt là chúng tôi đã sử dụng vòng lặp for-each để lặp lại qua từng giá trị.

Bạn có thể chọn sử dụng for-each vòng lặp thay vì for vòng lặp vì việc đọc từng vòng lặp dễ dàng hơn nhưng cả hai phương pháp đều hoạt động hiệu quả.

Kết luận

Lớp Java ArrayList cho phép bạn xác định các mảng có thể lưu trữ nhiều giá trị mà không được thông báo trước có bao nhiêu giá trị để lưu trữ.

Chúng tôi mới chỉ sơ lược về bề mặt của việc sử dụng ArrayLists trong Java. Để tìm hiểu thêm, bạn có thể muốn xem các hướng dẫn sau:

  • Chuyển đổi ArrayList thành Array
  • Cách khởi tạo ArrayList
  • Cách sắp xếp ArrayList

Giờ đây, bạn không còn phải lo lắng về những gì mình sẽ làm nếu bạn không biết một mảng sẽ cần lưu trữ bao nhiêu giá trị. Bạn sẽ có thể sử dụng ArrayList để giải quyết vấn đề này!