Tôi đã sử dụng Collections.sort(playersList);
để sắp xếp một List
. Vì vậy, tôi nghĩ rằng playersList
được sắp xếp ngay bây giờ. Nhưng làm thế nào tôi có thể lấy yếu tố đầu tiên của danh sách? playersList[0]
không hoạt động.Làm cách nào để có được yếu tố đầu tiên từ danh sách được sắp xếp?
Trả lời
playersList.get(0)
Java có đa hình điều hành giới hạn. Vì vậy, bạn sử dụng phương pháp get()
trên các đối tượng List
, chứ không phải toán tử chỉ mục mảng ([]
)
Bạn phải truy cập danh sách hơi khác với mảng trong Java. Xem javadocs cho giao diện List
để biết thêm thông tin.
playersList.get(0)
Tuy nhiên, nếu bạn muốn tìm phần tử nhỏ nhất trong playersList
, bạn không nên sắp xếp thành phần nhỏ nhất và sau đó lấy phần tử đầu tiên. Điều này chạy rất chậm so với chỉ tìm kiếm một lần thông qua danh sách để tìm phần tử nhỏ nhất.
Ví dụ:
int smallestIndex = 0;
for (int i = 1; i < playersList.size(); i++) {
if (playersList.get(i) < playersList.get(smallestIndex))
smallestIndex = i;
}
playersList.get(smallestIndex);
Đoạn mã trên sẽ tìm phần tử nhỏ nhất trong O(n)
thay vì O(n log n)
thời gian.
Điều đó phụ thuộc vào những gì gõ danh sách của bạn, cho ArrayList
sử dụng:
list.get(0);
cho LinkedList
sử dụng:
list.getFirst();
nếu bạn thích cách tiếp cận array
:
list.toArray()[0];
lời khuyên xấu. LinkedList thực hiện giao diện Danh sách, không cần sử dụng một phương thức đặc biệt (và tôi sẽ ngạc nhiên vì có bất kỳ sự khác biệt về hiệu năng nào giữa hai phương thức này). Và gọi toArray() là lãng phí - bạn có thể phân bổ danh sách vào một mảng mới không có lý do! – Kip
@Kẹo, nhận xét kỳ lạ; lớp LinkedList không triển khai thực hiện các phương thức đầu tiên và cuối cùng. Nếu bạn có lý do chính đáng để sử dụng LinkedList, bạn không nên hạn chế sử dụng các phương thức của nó chỉ vì chúng không có trong giao diện Danh sách. Ví dụ mảng có thể hữu ích nếu danh sách chính nó là không cần thiết sau khi sắp xếp, và gần nhất với những gì OP hỏi. Nếu không biết bối cảnh của mã nguồn được đề cập, bạn không thể xác định tính hợp lệ của lời khuyên. – rsp
tại sao việc bạn có cần danh sách sau khi sắp xếp có quan trọng không? trong cả hai trường hợp (hoặc thậm chí nếu danh sách không bao giờ được sắp xếp) gọi toArray() chỉ để lấy phần tử đầu tiên (có thể) không cần thiết tạo ra toàn bộ mảng. – Kip
Matthew's answer là chính xác:
list.get(0);
Để làm được những gì bạn đã cố gắng:
list[0];
bạn sẽ phải đợi cho đến khi Java 7 is released:
devoxx conference http://img718.imageshack.us/img718/11/capturadepantalla201003cg.png
Dưới đây là một thú vị presentation Mark Reinhold về Java 7
Có vẻ như parle ys trang web hiện đang xuống, hãy thử sau :(
Điều này dường như không thực sự biến nó thành java 7 – Gunner
Nếu bộ sưu tập của bạn không phải là một List
(và do đó bạn không thể sử dụng get(int index)
), sau đó bạn có thể sử dụng iterator:
Iterator iter = collection.iterator();
if (iter.hasNext()) {
Object first = iter.next();
}
Nếu bạn chỉ muốn nhận được tối thiểu là một danh sách, thay vì phải lọc nó và sau đó nhận được phần tử đầu tiên (O(N log N)
), bạn có thể sử dụng làm điều đó trong thời gian tuyến tính sử dụng min
:
<T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
Điều đó có vẻ gnarly tại f trước tiên, nhưng nhìn vào các câu hỏi trước đây của bạn, bạn có một List<String>
. Tóm lại: min
hoạt động trên đó.
Đối với câu trả lời dài: tất cả những thứ super
và extends
trong những ràng buộc kiểu chung chung là những gì Josh Bloch gọi là nguyên tắc PECS (thường được trình bày bên cạnh một hình ảnh của Arnold - Tôi không đùa!)
Nhà sản xuất mở rộng, người tiêu dùng Siêu
Nó chủ yếu làm cho Generics mạnh mẽ hơn, vì những hạn chế rất linh hoạt hơn trong khi vẫn giữ gìn an toàn kiểu (xem: what is the difference between ‘super’ and ‘extends’ in Java Generics)
Sử dụng các luồng Java 8, bạn có thể biến danh sách của mình thành một luồng và lấy mục đầu tiên trong danh sách bằng cách sử dụng phương thức .findFirst()
.
List<String> stringsList = Arrays.asList("zordon", "alpha", "tommy");
Optional<String> optional = stringsList.stream().findFirst();
optional.get(); // "zordon"
Phương pháp .findFirst()
sẽ trả về một Optional có thể có hoặc không có thể chứa một giá trị chuỗi (nó có thể không chứa một giá trị nếu stringsList
là trống).
Sau đó, để tháo vật phẩm khỏi tùy chọn Sử dụng phương thức .get()
.
- 1. sắp xếp danh sách theo một số yếu tố
- 2. sắp xếp lại các yếu tố danh sách - jQuery?
- 3. Làm cách nào tôi có được khoảng cách tối thiểu giữa các yếu tố Danh sách?
- 4. Làm cách nào để xuất bảng xếp hạng yếu tố được sắp xếp?
- 5. Làm cách nào để kéo từ danh sách dọc được kết nối đến mục đầu tiên của một danh sách khác bên dưới với jQueryUI Sắp xếp?
- 6. Python - Sắp xếp các yếu tố trong danh sách các danh sách
- 7. Liệu python có một danh sách được sắp xếp?
- 8. Các yếu tố xáo trộn trong danh sách (sắp xếp lại các yếu tố danh sách ngẫu nhiên)
- 9. Chọn kết quả từ giữa danh sách được sắp xếp?
- 10. Zend Paginator - Làm thế nào để có được yếu tố đầu tiên trong paginator?
- 11. Làm thế nào để có được những yếu tố đầu tiên của IEnumerable
- 12. Làm thế nào để có các danh sách được sắp xếp theo thứ tự chính xác
- 13. Làm cách nào để có được danh sách các tên riêng biệt, được sắp xếp từ một DataTable bằng LINQ?
- 14. Làm thế nào để có được yếu tố bên trong đầu tiên?
- 15. Danh sách được sắp xếp theo thứ tự django
- 16. Hiệu quả nhận được các khoản được sắp xếp của một danh sách được sắp xếp
- 17. Sắp xếp một danh sách từ một danh sách ID
- 18. Làm cách nào để sắp xếp danh sách trong Jinja2?
- 19. Yếu tố hoán đổi danh sách Array
- 20. Sắp xếp một danh sách các hàng phụ thuộc vào hai yếu tố
- 21. C# Cách sắp xếp danh sách được sắp xếp theo cột giá trị
- 22. Python cách sắp xếp danh sách này?
- 23. javascript - ngẫu nhiên danh sách HTML yếu tố để
- 24. Sửa yếu tố đầu tiên, trộn phần còn lại của một danh sách/mảng
- 25. yếu tố namevaluepair Danh sách
- 26. Tìm các yếu tố không trùng lặp trong một mảng được sắp xếp
- 27. jQuery - nhận lớp đầu tiên chỉ từ một yếu tố
- 28. Sắp xếp danh sách được liên kết trong Java
- 29. Làm thế nào để bạn có được danh sách thư mục được sắp xếp theo ngày tạo trong python?
- 30. jquery-ui có thể sắp xếp: các yếu tố được kéo ra sau khi sử dụng nhiều loại có thể sắp xếp
Tôi đi lang thang tại sao một hoạt động cơ bản nên được lập trình. Tại sao Java không cung cấp một hàm trả về một giá trị tối thiểu từ mảng? – Roman
Roman, có một phương thức như vậy, Collections.min (http://java.sun.com/javase/7/docs/api/java/util/Collections.html#min%28java.util.Collection%29). –