2016-01-28 16 views

Trả lời

14

Họ tạo ra các loại khác nhau của các đối tượng. new ArrayList<>() tạo ra một java.util.ArrayList, có thể được thêm vào, vv

Arrays.asList() sử dụng một loại mà xảy ra cũng được gọi là ArrayList, nhưng là một loại lồng nhau (java.util.Arrays$ArrayList) và không cho phép các yếu tố để được thêm vào hoặc gỡ bỏ . Nó chỉ kết thúc tốt đẹp một mảng.

Bây giờ, nếu bạn không quan tâm đến những khác biệt đó, bạn kết thúc với hai lần triển khai gần như tương đương, cả hai gói một mảng trong giao diện List<>. Tôi sẽ rất ngạc nhiên khi thấy chúng khác biệt về hiệu suất theo bất kỳ cách thức quan trọng nào - nhưng hơn bao giờ hết, nếu bạn có các mối quan tâm về hiệu suất cụ thể, bạn nên kiểm tra chúng trong ngữ cảnh cụ thể của bạn.

+4

Wow, tôi thậm chí không biết rằng ArrayList từ 'Arrays.asList()' thực sự là một ArrayList khác so với java.util.ArrayList. – exception1

+2

Tôi cũng không biết rằng ... Có vẻ như 2 biến thể khác nhau một chút về hiệu quả (ít nhất là trên máy của tôi). Trên 100 triệu lượt chạy biến thể đầu tiên cần ~ 1500 ms và thứ hai ~ 900 ms – ParkerHalo

Các vấn đề liên quan