CodeGym/Blog Java/Ngẫu nhiên/Phương thức Arrays.asList() trong Java

Phương thức Arrays.asList() trong Java

Xuất bản trong nhóm
Rất nhiều người mới bắt đầu nhầm lẫn giữa khái niệm phương thức Arrays.asList() với cấu trúc dữ liệu ArrayList. Mặc dù chúng có thể trông và âm thanh tương tự nhau, nhưng hai cái này hoàn toàn khác nhau khi thực hiện. Trong bài đăng này, chúng tôi sẽ đề cập đến cách sử dụng cơ bản của phương thức Arrays.asList() và sẽ giải quyết một số nhầm lẫn phổ biến liên quan đến nó.

Tại sao Arrays.asList() được sử dụng?

Nếu bạn có một Mảng mà bạn cần biến thành một danh sách thì java.util.Arrays cung cấp một trình bao bọc Arrays.asList() để phục vụ mục đích này. Nói một cách đơn giản, phương thức này lấy một mảng làm tham số và trả về một danh sách. Các phần chính của API nền tảng Java đã được phát triển trước khi khung bộ sưu tập được giới thiệu. Vì vậy, đôi khi, bạn có thể cần dịch giữa các mảng truyền thống và các bộ sưu tập hiện đại hơn. Chức năng này phục vụ như một liên kết giữa Bộ sưu tập và API dựa trên mảng.Phương thức Arrays.asList() trong Java - 1

Ví dụ

Hãy xem ví dụ sau:
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

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

	String[] teamMembers = {"Amanda", "Loren", "Keith"};
      // using aslist() method
	List teamList = Arrays.asList(teamMembers);
	System.out.println("List : " + teamList);

	HashSet teamHashSet = new HashSet<>(Arrays.asList(teamMembers));
	System.out.println("HashSet : " + teamHashSet);
    }
}
Đầu ra:
Danh sách : [Amanda, Loren, Keith] HashSet : [Keith, Loren, Amanda] // HashSet không duy trì trật tự

Arrays.asList() và ArrayList khác nhau như thế nào?

Khi bạn gọi phương thức Arrays.asList() trên một mảng, đối tượng được trả về không phải là ArrayList (Triển khai mảng có thể thay đổi kích thước của giao diện Danh sách ). Nó là một đối tượng dạng xem với các phương thức get()set() truy cập vào mảng bên dưới. Tất cả các phương thức sẽ thay đổi kích thước của mảng, chẳng hạn như add() hoặc remove() của trình vòng lặp được liên kết sẽ đưa ra một ngoại lệ UnsupportedOperationException . Lý do chương trình java biên dịch thành công nhưng đưa ra Ngoại lệ thời gian chạy là do rõ ràng, một "Danh sách" được trả về do kết quả củaArrays.asList() . Trường hợp tất cả các hoạt động thêm/xóa được cho phép. Nhưng vì, cấu trúc dữ liệu cơ bản là một “mảng” không thể thay đổi kích thước , do đó, một ngoại lệ được đưa ra trong thời gian chạy. Đây là một đoạn cho thấy nó trông như thế nào:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
   public static void main(String[] args) {
	Integer[] diceRoll = new Integer[6];
      //using aslist() method
	List diceRollList = Arrays.asList(diceRoll);
	System.out.println(diceRollList);

	// using getters and setters to randomly access the list
	diceRollList.set(5, 6);
	diceRollList.set(0, 1);
	System.out.println(diceRollList.get(5));
	System.out.println(diceRollList.get(1));

	System.out.println(diceRollList);

	diceRollList.add(7); // Add a new Integer to the list
    }
}
Đầu ra:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] Ngoại lệ trong luồng "chính" java.lang.UnsupportedOperationException tại java.util.AbstractList.add(AbstractList. java:148) tại java.util.AbstractList.add(AbstractList.java:108) tại ArraysAsListDemo.main(ArraysAsListDemo.java:20)

Ví dụ sử dụng phương thức asList()

Kể từ Java SE 5.0, phương thức asList() được khai báo là có số lượng đối số thay đổi. Thay vì truyền một mảng, bạn cũng có thể truyền các phần tử riêng lẻ. Ví dụ:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
    public static void main(String[] args) {
	List seasons = Arrays.asList("winter", "summer", "spring", "fall");
	List odds = Arrays.asList(1, 3, 5, 7, 9);

	System.out.println(seasons);
	System.out.println(odds);
    }
}
Đầu ra:
[đông, hạ, xuân, thu] [1, 3, 5, 7, 9]

Phần kết luận

Để sử dụng Arrays.asList(), bạn cần lưu ý rằng đó chỉ là một phương thức bao bọc cho tiện ích của riêng bạn. Đừng trộn lẫn nó với ArrayList và hãy nhớ rằng nó trả về một “danh sách”. Ban đầu, bạn có thể gặp lỗi khi thực hiện các chức năng thêm/xóa, nhưng tất cả sẽ biến mất nếu thực hành và hiểu biết nhất quán. Vì vậy, hãy nhấn vào IDE của bạn và có một trải nghiệm học tập tuyệt vời!
Bình luận
  • Phổ biến
  • Mới
Bạn phải đăng nhập để đăng nhận xet
Trang này chưa có bất kỳ bình luận nào