Hướng dẫn java collections cheat sheet pdf - java bộ sưu tập cheat sheet pdf

Mỗi chương trình Java có xu hướng có một điểm chung. Họ sẽ sử dụng tất cả các bộ sưu tập Java! Họ rất cơ bản, chúng tôi không thể tưởng tượng được việc bỏ qua một bộ sưu tập Java cho bộ sưu tập các tờ cheat của chúng tôi. Trên thực tế, bảng gian lận này gần như bạn có thể có một tờ cheat java.

Nhưng đó là & nbsp; một thử thách khó khăn & nbsp; vì có rất nhiều điều bạn cần biết về khung bộ sưu tập, các chi tiết thực hiện, các trường hợp sử dụng chính xác, cách chọn đúng loại bộ sưu tập, họ có thể làm gì và khi nào chuyển sang thư viện bên thứ ba làm trái ngược với việc sử dụng các bộ sưu tập tích hợp trong JDK.

Giao diện và triển khai Bộ sưu tập JDK

Bạn có thể nghĩ rằng khung bộ sưu tập luôn là một phần của JDK. Bất ngờ, ngạc nhiên, điều đó không đúng. API Bộ sưu tập Java là một trong những phần cơ bản nhất của JDK hoặc bất kỳ ngôn ngữ lập trình nào cho vấn đề đó, nhưng đó cũng là một trong những khía cạnh khó nhất của lập trình để có được đúng. Trên hết, thật khó khăn khi làm cho thư viện bộ sưu tập trở nên đơn giản, mạch lạc và dễ sử dụng (Tôi đã nhìn vào bạn, Scala).

Vì vậy, Thư viện Bộ sưu tập Java đã được giới thiệu với Java trong Java 1.2 vào năm 1998 và đã gắn bó với chúng tôi kể từ đó. Vì khả năng tương thích ngược là một trong những giá trị cốt lõi của nền tảng Java, các bộ sưu tập đã không thay đổi rất nhiều kể từ đó. Tuy nhiên, gần đây trong bản phát hành Java 8, ngôn ngữ đã phát triển đủ để cung cấp các công cụ để tăng cường giao diện thu thập mà không phá vỡ khả năng tương thích ngược.

Nói chung, Bộ sưu tập Java là một thư viện toàn diện có chứa các tiện ích để giải quyết hầu hết mọi cấu trúc dữ liệu giống như container bạn có thể cần. Hãy đi sâu vào loại bộ sưu tập nào có sẵn và phác thảo những gì làm cho chúng trở nên đặc biệt và lý do tại sao bạn có thể muốn sử dụng chúng.

Mô tả ngắn về các bộ sưu tập Java được sử dụng nhiều nhất

Có hai cách tiếp cận chính để chọn loại bộ sưu tập bạn cần trong mã của mình. Đầu tiên là đủ đơn giản, nhưng không phải lúc nào cũng hiệu quả nhất:

Nếu nó phù hợp với một danh sách mảng, hãy sử dụng ArrayList, nếu không bạn có thể cần một Hashmap.

Cái khác bao gồm có sự hiểu biết về các hoạt động bạn sẽ cần từ bộ sưu tập, hiệu suất bạn mong đợi từ chúng và loại dữ liệu bạn dự định đưa vào bộ sưu tập. Mặc dù lời khuyên ở trên có thể đưa bạn khá xa, nhưng tốt hơn là hiểu các tùy chọn có sẵn để giúp bạn đưa ra quyết định sáng suốt.

Bộ sưu tập Java 8 & NBSP; bạn cần thành thạo

Có 4 loại bộ sưu tập chính của Java 8 có sẵn. Đương nhiên, việc triển khai cho từng loại có thể được tìm thấy trong các giao diện tương ứng. Trước khi chúng tôi bắt đầu đào sâu vào những điều này, có 2 giao diện ô chính mà bạn muốn biết: ITEBELLE và GOODE. Thông thường, bạn hiếm khi cần phải suy nghĩ về những điều này, nhưng điều quan trọng là ít nhất phải hiểu chúng. Giao diện có thể lặp lại cho phép người ta có được một trình lặp và đi qua chuỗi các phần tử bằng cách gọi phương thức tiếp theo (). Nó cũng làm cho nó có thể lặp lại thông qua các yếu tố với đường cú pháp của vòng lặp "for-elh.


for(E e: iterable) 


Giao diện bộ sưu tập mở rộng điều đáng tin cậy và đại diện cho một nhóm các yếu tố có thể được thêm, loại bỏ hoặc kiểm tra sự hiện diện trong bộ sưu tập. Tuy nhiên, việc triển khai thường thực hiện các giao diện cụ thể hơn được thiết kế với việc triển khai bộ sưu tập. Dưới đây là các giao diện thu thập được sử dụng nhiều nhất.

Bộ sưu tập Java: Danh sách

Một danh sách là một bộ sưu tập các yếu tố được đặt hàng. Một số ngôn ngữ gọi đó là một chuỗi, hoặc bạn có thể nghĩ nếu nó như một mảng có độ dài khác nhau. Bạn có thể thêm các phần tử vào nó, ở giữa nó, truy cập và thay thế các phần tử bằng một chỉ mục.

Không có gì đáng ngạc nhiên, danh sách này là một trong những bộ sưu tập phổ biến nhất được sử dụng. Tuy nhiên, hầu như không có sự đa dạng trong việc triển khai được sử dụng cần thiết. Vâng, ở trường, bạn đã học về các danh sách liên kết đáng sợ và cách thực hiện chúng và thật tuyệt vời khi có quyền truy cập vào đầu và đuôi của nó. Trong thực tế, bạn tốt hơn sử dụng ArrayList 99% thời gian.

Lý do cho điều đó khá đơn giản, nó tiêu thụ ít bộ nhớ hơn, nó thân thiện hơn với bộ nhớ cache và nói chung là nhanh hơn so với danh sách liên kết từ JDK. Trong thực tế, bạn nên cố gắng không sử dụng danh sách liên kết.

Nếu bạn thấy trước rằng bạn sẽ cần thiết lập quyền truy cập đồng thời vào danh sách, bạn sẽ cần phải lo lắng về việc đồng bộ hóa. Thông thường, điều đó có nghĩa là bạn sẽ sử dụng một stoponWriteArrayList, an toàn cho luồng và bất biến. Nếu dữ liệu của bạn có thể bị đột biến bởi một chuỗi khác, nhưng hiệu suất của truy cập đọc là quan trọng hơn nhiều. CopyonWriteArrayList là danh sách lựa chọn của bạn.

Bộ sưu tập Java: Đặt

Một bộ sưu tập không chứa các phần tử trùng lặp là một tập hợp. Giống như tập toán, giao diện biểu thị một bộ sưu tập giữ các phần tử và về cơ bản trả lời một câu hỏi duy nhất: là một phần tử nhất định có trong tập hợp.

Đặt không nhất thiết chỉ định thứ tự của các phần tử khi bạn lặp lại chúng, nhưng tất cả các triển khai đã được tạo ra với hiệu suất của phương thức chứa trong tâm trí.

Có hai triển khai bộ chính mà bạn nên biết: Hashset và Plantset. Hashset băm các phần tử và phân phối chúng thành các thùng theo giá trị băm. Bộ cây được hỗ trợ bởi một cây cân bằng, khiến nó được đặt hàng và điều hướng (vì vậy bạn có thể hỏi những gì cho các yếu tố trước và tiếp theo theo giá trị). Kết quả là các hoạt động của Treeset sẽ có độ phức tạp tồi tệ hơn so với Hashset, nhưng hãy nhớ rằng các hoạt động vẫn mất thời gian thăng hoa của kích thước đã đặt, điều đó có nghĩa là đối với các giá trị thực tế của kích thước tập hợp, vẫn còn khá ngắn.

Tuy nhiên, thông thường các trường hợp sử dụng cho các bộ không yêu cầu điều hướng từ phần tử này sang phần tử khác, vì vậy Hashset là triển khai GOTO mà bạn sẽ có xu hướng sử dụng. Và đó là một điều tốt. Chỉ cần nhớ thực hiện chính xác các phương thức hashCode()equals() cho các yếu tố của bạn.

Bộ sưu tập Java: Bản đồ

Có lẽ loại bộ sưu tập được sử dụng nhiều nhất mọi thời đại - một đối tượng ánh xạ các phím đến các giá trị, một mảng kết hợp, một bảng: bản đồ. Bản đồ là loại thu thập đa năng nhất vì sự liên kết của các phím với các giá trị thực sự là những gì máy tính nói về: một từ điển, bản đồ các thuộc tính đối tượng với các giá trị của chúng giống như JavaScript, ánh xạ tên tệp đến nội dung và siêu dữ liệu của chúng Thuộc tính phiên, các mặt hàng giỏ sản phẩm, điểm số cao. Bất cứ nơi nào bạn nhìn, bạn sẽ tìm thấy một trường hợp sử dụng cho một bản đồ.

Đương nhiên, có các triển khai khác nhau được điều chỉnh để cung cấp sự đánh đổi hiệu suất khác nhau. Nhưng việc triển khai GOTO mặc định của giao diện bản đồ chắc chắn là hashmap khét tiếng.

Việc triển khai HashMap phụ thuộc vào các đối tượng chính thực hiện các phương thức HashCode () và Equals () một cách chính xác, do đó, luôn luôn chăm sóc chúng. Đổi lại, HashMap hứa hẹn cho bạn hiệu suất thời gian gần như không đổi, điều này tuyệt vời như bạn có thể thoát khỏi bất kỳ cấu trúc dữ liệu nào và tỷ lệ rất tốt.

Nếu bạn cần điều hướng giữa các yếu tố hoặc bạn cần phải đối phó với các loại yếu tố không thể chối cãi, bạn có thể sử dụng Treemap. Sử dụng một cây cân bằng, giống như các bộ ở trên, Treemap chia tỷ lệ một cách thích hợp và cho bạn cơ hội lặp lại nội dung theo thứ tự được sắp xếp.

Bây giờ chúng tôi không muốn đi sâu vào tất cả các phương thức Bộ sưu tập Java & NBSP; API cho bản đồ. Bạn có thể đặt và nhận các giá trị, như bạn mong đợi. Nhưng chúng tôi rất thích chỉ ra một phương pháp siêu tuyệt vời đã có sẵn cho chúng tôi kể từ Java 8: Computeifabsent.computeIfAbsent.


default V computeIfAbsent(K key,
                          Function mappingFunction)


Những gì ComputeifabSent làm là cung cấp cho bạn cơ hội để chỉ định cách lấy giá trị cho khóa, nếu nó chưa có trong bộ sưu tập. Về cơ bản, nó kiểm tra nếu khóa đã cho được chứa trong bản đồ. Nếu nó xảy ra như vậy, bạn sẽ lấy lại giá trị tương ứng. Nếu không, hàm ánh xạ được thực thi và các giá trị kết quả được đưa vào bản đồ và trả lại cho bạn.

Đó là ít nhiều cách thức hoạt động của bộ nhớ cache. Tuyệt vời, phải không?

Bộ sưu tập Java: Hàng đợi

Hàng đợi là một bộ sưu tập được thiết kế để giữ các yếu tố trước khi xử lý, các phần tử chờ được tiêu thụ và có thể được thêm vào đuôi của hàng đợi. Hàng đợi là những phần mềm cơ bản kết hợp các thành phần với nhau. Khi các thành phần đang giao tiếp trong một hệ thống, thông thường có một hàng các tin nhắn ngồi giữa chúng.

Hàng đợi là một loại bộ sưu tập đặc biệt, bởi vì hầu hết được vận hành bằng giao diện hàng đợi, thay vì các phương thức được kế thừa từ giao diện thu thập. Để thêm một phần tử vào hàng đợi, hãy sử dụng:


E e; 
Queue q = … 
q.offer(e); // try to put the element into the queue, if the queue is full, do nothing
q.poll(); // remove the head of the queue 
q.peek(); // return the head of the queue without modifying it.


Ngoài ra còn có các phương pháp tương ứng ném ngoại lệ nếu hoạt động không thành công. Nhưng tất cả trong tất cả, có ba hoạt động chính mà người ta thực hiện trên hàng đợi: Enqueue, Deque và Peek. Lưu ý rằng bạn có thể nhận được một trình lặp từ hàng đợi và xử lý các yếu tố tương tự như bất kỳ bộ sưu tập nào khác. Nó thậm chí sẽ hoạt động cho một số triển khai của giao diện hàng đợi, nhưng không phải cho tất cả.

Đây là các lớp điển hình mà bạn có thể sử dụng để triển khai giao diện hàng đợi:

  • ArrayDeque - Một triển khai thử nghiệm chiến đấu mục đích chung của một hàng đợi. ArrayDeque được hỗ trợ bởi một mảng có thể thay đổi có thể phát triển để phù hợp với các yếu tố bổ sung. Hầu hết các hoạt động ArrayDeque chạy trong thời gian được khấu hao.
  • Ưu tiên - Một hàng đợi của các yếu tố được sắp xếp. Việc sắp xếp đạt được một cách tự nhiên hoặc được xác định bởi một bộ so sánh được cung cấp, nhưng đầu của hàng đợi luôn là phần tử tối thiểu. Lưu ý rằng hàng đợi ưu tiên sẽ không thay đổi thứ tự nếu bạn đột biến các yếu tố bên trong nó. Nếu bạn tò mò về hiệu suất, các hoạt động đột biến chạy trong thời gian logarit của kích thước hàng đợi, nhìn trộm và như vậy - không đổi và tìm kiếm là tuyến tính.

Các nhà phát triển sử dụng phiên bản Java nào?

Báo cáo năng suất nhà phát triển Java mới nhất của chúng tôi cho thấy phiên bản JDK & NBSP; số liệu thống kê sử dụng cho các nhà phát triển Java và đưa ra cái nhìn sâu sắc về lý do tại sao một số phiên bản vẫn rút ra số lượng lớn.

Nhận báo cáo

Tiện ích bộ sưu tập Java

Bây giờ chúng tôi đã nói về tất cả các loại bộ sưu tập phổ biến nhất mà bạn gặp phải, đó là thời gian để đào sâu vào các phần khác của Khung Bộ sưu tập Java. Có một lớp tuyệt vời, được gọi là Bộ sưu tập, cung cấp các phương pháp tiện ích tiện dụng mà bạn nên biết. Trước hết, hãy nói về các trình bao bọc bộ sưu tập. Bất kỳ loại bộ sưu tập nào cũng có thể có các yêu cầu bổ sung cho chức năng của nó, các phẩm chất trực giao này được thực hiện với các trình bao bọc. Bộ sưu tập ban đầu được gói thành một bộ sưu tập khác để ủy thác logic xử lý phần tử cho nó.

Ví dụ điển hình của một số chức năng phù hợp cho một trình bao bọc đang tạo ra một bộ sưu tập bất biến. Thật vậy, bạn chỉ cần bỏ qua tất cả các hoạt động đột biến như: đặt, chèn, v.v. Và tất cả các hoạt động không cắt có thể dễ dàng được ủy quyền cho các triển khai thu thập thực tế.

Lớp Bộ sưu tập cung cấp một tập hợp các phương thức cung cấp cho bạn rằng: các bộ sưu tập không thể kiểm soát được:

Hướng dẫn java collections cheat sheet pdf - java bộ sưu tập cheat sheet pdf

Một loại trình bao bọc hữu ích khác có sẵn là trình bao bọc bộ sưu tập được đồng bộ hóa. Thật vậy, hầu hết các triển khai bộ sưu tập không tự thực hiện việc đồng bộ hóa. Bạn sẽ làm gì nếu bạn cần sử dụng Hashset đồng thời từ nhiều luồng? Đúng vậy, bạn gọi phương thức trình bao bọc tương ứng và sử dụng bộ được trả về.


Collections.synchronizedSet(new HashSet());


Điều quan trọng cần nhớ là trình bao bọc không thay đổi việc triển khai bộ sưu tập cơ bản. Đó là nếu bạn có được một tham chiếu đến bộ băm được bọc và sử dụng đồng thời không có gì đảm bảo.

Dưới đây là danh sách ngắn các phương pháp hữu ích trong lớp Bộ sưu tập thường được sử dụng nhiều hơn các phương pháp khác:

  • BinarySearch - Một cách nhanh để tìm một yếu tố trong một danh sách được sắp xếp.
  • Tần suất - cho bạn biết có bao nhiêu lần một phần tử trong bộ sưu tập
  • Min / Max - Trả về yếu tố nhỏ nhất / lớn nhất của bộ sưu tập
  • ReverseOrder - cung cấp cho bạn một bộ so sánh để sắp xếp các yếu tố theo thứ tự giảm dần
  • Singleton - Kết thúc một đối tượng vào bộ chứa đối tượng đó, các phương thức tương tự có sẵn cho các lớp Danh sách và Bản đồ

Thư viện bộ sưu tập Java khác

Có nhiều câu hỏi mà bạn có thể hỏi về việc triển khai bộ sưu tập của mình và rõ ràng có nhiều câu trả lời hơn là chỉ các triển khai cổ phiếu bạn có thể tìm thấy trong JDK. Dưới đây là một số thư viện mà chúng tôi nghĩ là tuyệt vời và cung cấp cho bạn nhiều chức năng hơn cho việc tạo và thao tác thu thập và nhiều loại thu thập hơn.

  • Guava - Thư viện lõi Google cho Java 6+. Có lẽ thư viện bộ sưu tập bên thứ ba mặc định cho các dự án Java. Chứa một cường độ của các phương pháp thuận tiện để tạo bộ sưu tập, như các nhà xây dựng Fluent, cũng như các loại thu thập nâng cao.
  • Bộ sưu tập Eclipse - Các tính năng bạn muốn với các bộ sưu tập bạn cần. Trước đây được gọi là GS-Collection, thư viện này bao gồm hầu hết mọi bộ sưu tập bạn có thể cần: Bộ sưu tập loại nguyên thủy, Multimap, Bản đồ hai chiều, v.v.
  • Fastutil - Bộ sưu tập cụ thể loại nhanh và nhỏ gọn cho Java. Lựa chọn mặc định tuyệt vời cho các bộ sưu tập các loại nguyên thủy, như int hoặc dài. Cũng xử lý các bộ sưu tập lớn với hơn 2^31 yếu tố.
  • JCTools - Công cụ đồng thời Java cho JVM. Nếu bạn làm việc trên các ứng dụng đồng thời thông lượng cao và cần một cách để tăng hiệu suất của bạn, hãy xem JCTools. Nó chứa rất nhiều hàng đợi cho tất cả các loại môi trường sản xuất / tiêu dùng đơn / nhiều và các lớp hữu ích khác. & NBSP;

Chắc chắn, đây không phải là một danh sách dứt khoát, nhưng đây là những thư viện thiết yếu mà bạn nên biết. Bạn & nbsp; có thể đã sử dụng ổi trong dự án của bạn; Ít nhất một khi bạn đã nghĩ về việc có các bộ sưu tập cho nguyên thủy, v.v. Vì vậy, hãy kiểm tra những điều này!

Cải tiến & NBSP; Bộ sưu tập Java

Thật không dễ dàng để thay đổi một cái gì đó cơ bản như thư viện bộ sưu tập trong JDK. Tuy nhiên, bản phát hành Java 8 đã thực hiện một cải tiến lớn cho thư viện bộ sưu tập. Bộ sưu tập Java 8 & NBSP; Phương thức mặc định & NBSP; đã có thể phát triển các giao diện thu thập mà không phá vỡ tất cả các triển khai.

Tiến trình không dừng lại ở đó. Bản phát hành Java 9 sắp tới chứa JEP 269: Phương pháp nhà máy tiện lợi cho các bộ sưu tập, đề xuất bao gồm các phương pháp để tạo bộ sưu tập dễ dàng hơn. Cuối cùng, chúng tôi sẽ có thể chỉ định các bộ sưu tập có cú pháp đơn giản hơn như:


 
List.of(a, b, c);
Set.of(d, e, f, g);
Map.ofEntries(
    entry(k1, v1),
    entry(k2, v2),
    entry(k3, v3));


Điều đó sẽ thực sự ngọt ngào.

Tài nguyên bổ sung

Trong bộ sưu tập Java của chúng tôi Cheat Sheet PDF, chúng tôi đã cố gắng hết sức để bao gồm các thông tin cần thiết nhất bạn cần trong tầm tay. Muốn thông tin mở rộng? Tiếp tục đọc để biết thêm.

Hướng dẫn java collections cheat sheet pdf - java bộ sưu tập cheat sheet pdf

Tải xuống bảng gian lận

Suy nghĩ cuối cùng

Chúng tôi đã nói rất nhiều về các bộ sưu tập Java và các triển khai khác nhau của các giao diện thu thập bạn có thể tìm thấy trong gói java.util. Bộ, danh sách và bản đồ là bạn bè của bạn và bạn sẽ cần áp dụng khá nhiều trí tưởng tượng để đưa ra một chương trình không cần API Bộ sưu tập Java. Chúng tôi đã chạm vào chủ đề của trình bao bọc bộ sưu tập và cách làm cho các bộ sưu tập bất biến và đồng bộ hóa chúng để truy cập đồng thời.

Hãy chắc chắn kiểm tra các thư viện ở trên với các triển khai Bộ sưu tập thay thế. Hy vọng rằng bạn thích bài đăng này và tờ cheat cố gắng cung cấp cho bạn thông tin về các bộ sưu tập Java trên một mảnh giấy có kích thước A4 có thể in duy nhất. Lấy một bản sao ngay hôm nay bằng cách nhấp vào nút ở trên!

Hoặc, nếu bạn đang tìm kiếm các tờ cheat bổ sung, hãy chắc chắn kiểm tra bộ sưu tập Java Cheat Sheet của chúng tôi.

Bắt đầu với Rebel

Kích hoạt bản dùng thử miễn phí của bạn.

Hãy thử JREBEL & NBSP; & nbsp;

Bộ sưu tập trong Java PDF là gì?

Một bộ sưu tập là một đối tượng có thể lưu trữ các đối tượng khác, được gọi là các yếu tố. Bộ sưu tập cung cấp các phương pháp để thêm và loại bỏ các yếu tố và tìm kiếm một yếu tố cụ thể trong bộ sưu tập.an object which can store other objects, called elements. Collections provide methods for adding and removing elements, and for searching for a particular element within the collection.

Bộ sưu tập trong Java với các ví dụ là gì?

Khung Bộ sưu tập Java cung cấp một tập hợp các giao diện và lớp để thực hiện các cấu trúc và thuật toán dữ liệu khác nhau. Ví dụ, lớp LinkedList của khung bộ sưu tập cung cấp việc triển khai cấu trúc dữ liệu danh sách liên kết gấp đôi.provides a set of interfaces and classes to implement various data structures and algorithms. For example, the LinkedList class of the collections framework provides the implementation of the doubly-linked list data structure.

Bộ sưu tập Java hoạt động như thế nào?

Bộ sưu tập trong Java là một khung cung cấp một kiến trúc để lưu trữ và điều khiển nhóm các đối tượng.Bộ sưu tập Java có thể đạt được tất cả các hoạt động mà bạn thực hiện trên một dữ liệu như tìm kiếm, sắp xếp, chèn, thao tác và xóa.Bộ sưu tập Java có nghĩa là một đơn vị đối tượng.provides an architecture to store and manipulate the group of objects. Java Collections can achieve all the operations that you perform on a data such as searching, sorting, insertion, manipulation, and deletion. Java Collection means a single unit of objects.

Hệ thống phân cấp của khung thu thập trong Java là gì?

Phân cấp bộ sưu tập Java là hệ thống phân cấp của toàn bộ khung thu thập và nó chứa trong đó với bốn giao diện cốt lõi mà chúng là bộ sưu tập, bộ, bản đồ và danh sách.Ngoài ra, có hai giao diện tập trung hơn là Sắp xếp và Sắp xếp được sử dụng cho mục đích sắp xếp.Collection, Set, Map and List. Additionally, there are two more focused interfaces namely the SortedSet and SortedMap which is used for sorting purpose.