Java có một hàm được xây dựng để cho phép tôi tìm kiếm một phần tử trong một mảng hay tôi phải sử dụng vòng lặp for?Tìm một phần tử trong một mảng trong Java
Trả lời
Có một phương pháp contains
cho các danh sách, vì vậy bạn sẽ có thể làm:
Arrays.asList(yourArray).contains(yourObject);
Cảnh báo: điều này có thể không làm những gì bạn (hoặc I) mong đợi, xem bình luận của Tom dưới đây.
Sử dụng vòng lặp for. Không có gì được tích hợp vào mảng. Hoặc chuyển sang lớp sưu tập java.util.
Bạn có thể muốn xem xét sử dụng triển khai Collection
thay vì một mảng phẳng.
Giao diện Collection
xác định phương thức contains(Object o)
, trả về true
/false
.
ArrayList
triển khai xác định indexOf(Object o)
, cung cấp chỉ mục, nhưng phương pháp đó không có trên tất cả các triển khai thu thập.
Cả hai phương pháp yêu cầu triển khai đúng đắn của phương pháp equals()
, và có thể bạn muốn có một phương pháp thực hiện đúng hashCode()
chỉ trong trường hợp bạn đang sử dụng một băm dựa Collection
(ví dụ HashSet
).
Bạn có thể sử dụng một trong nhiều phương thức Arrays.binarySearch()
. Hãy nhớ rằng mảng phải được sắp xếp đầu tiên.
Đó là một lựa chọn duy nhất là các phần tử của mảng có thể so sánh được. –
Chúng tôi chỉ có thể giả định rằng đây là trường hợp, ví dụ: một mảng ints, Strings, v.v. Bạn luôn có thể cung cấp một ['Comparator'] tùy chỉnh (http://download.oracle.com/javase/6/docs/api/java/util/Comparator.html) để sắp xếp và tìm kiếm nếu cần. – krock
khó tin rằng không có Arrays.search ...
Với Java 8, bạn có thể làm điều này:
int[] haystack = {1, 2, 3};
int needle = 3;
boolean found = Arrays.stream(haystack).anyMatch(x -> x == needle);
Bạn sẽ cần phải làm
boolean found = Arrays.stream(haystack).anyMatch(x -> needle.equals(x));
nếu bạn đang làm việc với các đối tượng.
- 1. Python: tìm phần tử trong một mảng
- 2. để tìm ba phần tử chính trong một mảng
- 3. C: tìm số phần tử trong một mảng []
- 4. Tìm phần tử nhỏ nhất trong một mảng có mẫu
- 5. C - số phần tử trong một mảng?
- 6. mảng Một phần tử trong struct
- 7. Thay thế một phần tử trong một mảng đối tượng
- 8. Tìm vị trí của một phần tử trong một mảng đơn giản
- 9. Tìm một phần tử trong một danh sách các hàng
- 10. Tìm các phần tử duy nhất trong một mảng chuỗi trong C
- 11. xóa MỘT phần tử mảng theo giá trị trong ruby
- 12. Chọn tất cả các phần tử từ một cột trong một mảng các mảng trong Ruby?
- 13. Làm thế nào để kiểm tra xem một phần tử trong mảng tồn tại trong Java
- 14. Trao đổi vị trí của các phần tử trong một mảng trong java?
- 15. Java - nhận vị trí phần tử trong mảng
- 16. Phân ngẫu nhiên các phần tử trong một mảng?
- 17. Thêm các phần tử của một mảng
- 18. Làm cách nào để gọi một phần tử trong một mảng có nhiều mảng?
- 19. Tìm phần tử không lặp lại trong mảng?
- 20. cách tìm phần tử phù hợp nhất trong mảng số?
- 21. thay thế các phần tử chéo trong một mảng
- 22. Lấy một phần tử từ danh sách mảng trong Android?
- 23. Tạo một mảng với các phần tử $ x trong PHP
- 24. Lấy phần tử cuối cùng của một mảng trong CoffeeScript
- 25. Sử dụng XmlSerializer với một mảng trong phần tử gốc
- 26. cách truy cập các phần tử trong một mảng 2D?
- 27. Tìm phần tử tối đa phổ biến trong hai mảng?
- 28. Tìm vị trí phần tử trong Java TreeMap
- 29. Tìm các phần tử "không giống nhau" trong hai mảng
- 30. Tìm dãy số có tổng lớn nhất của các phần tử trong một mảng
Thats khá ngắn, nhưng trường hợp sử dụng này là đủ phổ biến mà họ thực sự cần phải thêm một hàm vào ngôn ngữ – Casebash
Hãy cẩn thận không sử dụng với các mảng nguyên thủy. –
@Tom: Tại sao không? Nó có hoạt động không? – Casebash