Mảng hay còn gọi là Array trong Java là một cấu trúc dữ liệu được sử dụng để lưu trữ một tập hợp các giá trị cùng kiểu dữ liệu trong một vùng nhớ liên tiếp. Mỗi phần tử trong mảng được định danh bằng một chỉ số (index) duy nhất và có thể truy cập bằng cách sử dụng chỉ số đó. 

1. Arrays.asList().contains()
Cách tiếp cận này có thể được sử dụng thường xuyên nhất để giải quyết vấn đề vì nó hoạt động rất tốt và dễ áp dụng. 
 
Trước tiên mảng được chuyển thành ArrayList. Mặc dù có một số phương pháp để chuyển đổi một mảng Java thành ArrayList, nhưng chúng ta có thể sử dụng phương pháp phổ biến nhất ở đây.
 
Sau đó, chúng ta có thể sử dụng hàm contain() trên ArrayList kết quả để xác định xem danh sách có chứa phần tử mà chúng ta đã cung cấp hay không. Phương pháp này tạo ra một giá trị Boolean.
Mảng có dạng Integer:
 
 
Kết quả của việc chạy mã: 
 
 
2. Sử dụng vòng lặp for
Vòng lặp for là một phương pháp xử lý vấn đề đơn giản hơn, tốn nhiều công sức hơn. Trong trường hợp xấu nhất, nó sẽ thực hiện một lần lặp trên toàn bộ mảng để xem phần tử có ở đó hay không.
Trước tiên hãy bắt đầu với số nguyên nguyên thủy: 
 
 
Biến found ban đầu được đặt thành false vì cách duy nhất để trả về true là tìm phần tử và gán rõ ràng một giá trị mới cho boolean. Ở đây, chúng ta chỉ cần so sánh từng phần tử của mảng với giá trị mà chúng ta đang tìm kiếm và trả về true nếu chúng khớp: 
 
 
Đối với Chuỗi và Đối tượng tùy chỉnh mà bạn có thể có trong mã của mình, bạn sẽ sử dụng toán tử so sánh khác. Giả sử bạn đã xác minh equals() phương thức một cách hợp lệ, bạn có thể sử dụng nó để kiểm tra xem một đối tượng có bằng đối tượng khác hay không, trả về true nếu chúng:
 
 
Kết quả của việc chạy mã: 
 
 
3. Collections.binarySearch()
Ngoài ra, chúng ta có thể tìm thấy một giá trị cụ thể bằng phương thức tích hợp sẵn binarySearch() từ Collections lớp. Vấn đề với tìm kiếm nhị phân là nó yêu cầu mảng của chúng ta phải được sắp xếp. Tuy nhiên, nếu mảng của chúng tôi được sắp xếp, binarySearch() sẽ hoạt động tốt hơn cả Arrays.asList().contains() phương pháp tiếp cận vòng lặp for
 
Tùy thuộc vào kích thước của mảng và kỹ thuật sắp xếp được sử dụng, nếu mảng không được sắp xếp thì cần có thêm thời gian để sắp xếp mảng có thể khiến chiến lược này kém thuận lợi hơn. binarySearch() có nhiều biến thể quá tải tùy thuộc vào loại được sử dụng và yêu cầu riêng của chúng ta, nhưng biến thể chung nhất là: 
 
 
Trong đó, a đại diện cho mảng và key giá trị được chỉ định mà chúng ta đang tìm kiếm.
Bây giờ, Giá trị trả về tương đối khó hiểu, vì vậy tốt nhất bạn nên lưu ý đến tài liệu chính thức của Oracle:
 
Giá trị trả về của phương thức này là chỉ mục của khóa được tìm kiếm, nếu nó được chứa trong mảng; mặt khác (-( điểm chèn ) - 1), trong đó điểm chèn được xác định là điểm mà tại đó khóa sẽ được chèn vào mảng: chỉ mục của phần tử đầu tiên lớn hơn khóa hoặc a.length nếu tất cả các phần tử trong mảng nhỏ hơn hơn khóa được chỉ định.
 
 
Kết quả hiển thị: 
 
 
Phần tử đầu tiên được tìm thấy ở vị trí 1. Phần tử thứ hai không được tìm thấy và sẽ được chèn vào vị trí 5- ở cuối mảng. Giá trị trả về là -(insertion point)-1, do đó giá trị trả về cuối cùng là -6.
Nếu giá trị ở trên bằng hoặc ở trên 0, thì mảng chứa phần tử và nếu không thì nó không chứa phần tử đó.
 
4. Java 8 Stream API
API luồng Java 8 cực kỳ linh hoạt và cung cấp câu trả lời rõ ràng cho một loạt nhiệm vụ liên quan đến việc xử lý các bộ sưu tập đối tượng. Đối với hầu hết mọi người, việc sử dụng Luồng cho loại công việc này diễn ra một cách tự nhiên và trực quan.
Bây giờ hãy xem cách xác minh xem một mảng có bao gồm số nguyên hay không bằng API Stream:
 
 
Và sau đó sẽ xuất hiện: 
 
 
Và để thực hiện điều này với Chuỗi hoặc các đối tượng tùy chỉnh:
 
 
Hoặc, bạn có thể làm điều này ngắn hơn bằng cách sử dụng tham chiếu phương thức:
 
 
Cả hai đều cho ra kết quả: 
 
 
5. Apache Commons - ArrayUtils
Nhiều dự án sử dụng thư viện Apache Commons, thư viện này bổ sung thêm nhiều giao diện, cách triển khai và lớp bổ sung cho Khung công tác Java cốt lõi.
ArrayUtils giới thiệu nhiều phương thức để thao tác với mảng, trong đó có contains() phương thức:
 

Điều này dẫn đến kết quả: 
 

Hy vọng rằng những chia sẻ của BAC sẽ giúp ích cho bạn. Đừng quên đón đọc các bài viết mới nhất được cập nhật tại BAC's Blog bạn nhé.

Nguồn tham khảo:
https://stackabuse.com/

Nhu cầu đào tạo doanh nghiệp

BAC là đơn vị đào tạo BA đầu tiên tại Việt Nam. Đối tác chính thức của IIBA quốc tế. Ngoài các khóa học public, BAC còn có các khóa học in house dành riêng cho từng doanh nghiệp. Chương trình được thiết kế riêng theo yêu cầu của doanh nghiệp, giúp doanh nghiệp giải quyết những khó khăn và tư vấn phát triển.
 
 

CÁC KHOÁ HỌC BUSINESS ANALYST BACs.VN DÀNH CHO BẠN

Khoá học Online:

Khoá học Offline:

Tại Tp.HCM:

Tại Hà Nội:

Tham khảo lịch khai giảng TẤT CẢ các khóa học mới nhất

Ban biên tập nội dung - BAC