Tôi thấy trong tài liệu API có phương thức sort()
trên List
, nhưng tôi không rõ cần phải có thông số gì. Nhu cầu hiện tại là cho một so sánh alpha thẳng rất đơn giản.Làm cách nào để sắp xếp danh sách các chuỗi trong Dart?
Trả lời
Cảm ơn câu hỏi! Bạn có thể sắp xếp một danh sách các Strings như thế này:
main() {
var fruits = ['bananas', 'apples', 'oranges'];
fruits.sort();
print(fruits);
}
Các bản in mã trên:
apples, bananas, oranges
ý rằng sort()
không trả lại một giá trị. Nó sắp xếp danh sách mà không cần tạo danh sách mới. Nếu bạn muốn sắp xếp và in trong cùng một dòng, bạn có thể sử dụng phương pháp thác:
print(fruits..sort());
Để kiểm soát hơn, bạn có thể xác định logic so sánh của riêng bạn. Dưới đây là một ví dụ về phân loại các loại trái cây dựa trên giá.
main() {
var fruits = ['bananas', 'apples', 'oranges'];
fruits.sort((a, b) => getPrice(a).compareTo(getPrice(b)));
print(fruits);
}
Hãy xem những gì đang diễn ra ở đây.
Danh sách có phương thức sort, có một tham số tùy chọn: a Comparator. Công cụ so sánh là một typedef
hoặc bí danh chức năng. Trong trường hợp này, nó là một bí danh cho một chức năng giống như:
int Comparator(T a, T b)
Từ các tài liệu:
Một chức năng Comparator đại diện cho một tổng trật tự như vậy bằng cách trả lại một số nguyên âm nếu a là nhỏ hơn b, số không nếu a bằng b và số nguyên dương nếu a lớn hơn b.
Để thêm chỉ là một điểm đến câu trả lời chi tiết của Seth, nói chung, trong
(a, b) => foo(a, b)
truyền vào sort
, hàm foo
nên trả lời một kết quả số nguyên như sau:
- nếu một < b, kết quả phải là < 0,
- nếu a = b, kết quả phải là = 0 và
- nếu a> b, kết quả nên> 0.
Đối với pháp luật nêu trên chia làm ba phần để tổ chức, cả a
và b
phải Comparable
s.
Sau ngày hôm nay, bạn chỉ có thể thực hiện list.sort(). Đối số của phương thức sắp xếp giờ đây là tùy chọn và mặc định là một hàm gọi compareTo trên chính các phần tử đó. Vì String có thể so sánh, nên nó chỉ hoạt động ngay bây giờ.
Phương thức sắp xếp Danh sách() có bao giờ được cố định để không yêu cầu một hàm so sánh không? Hay là có hồi quy? Tôi đang sử dụng Dart 0.2.6.0_r15355 trên Ubuntu 12.04 và nhận được các kết quả sau: [3,1,2] .sort() == null và ['a', 'c', 'b']. Sort () == null. – devdanke
Rất tiếc! Dart đã sắp xếp mảng :-) Nhưng hàm sort() trả về void :-(Vì vậy, "print ([3,1,2] .sort()) '" output "null". Trong trường hợp này, các devs Dart là Tôi không muốn họ thực hiện một cách thông thạo, bởi vì sau đó bạn có thể sử dụng kết quả của việc gọi sort() ngay lập tức. – devdanke
Phân loại lười biếng. Kết quả là IQueryable.
Bộ so sánh tùy chỉnh có thể được chuyển làm đối số.
import 'package:queries/collections.dart';
void main() {
var fruits = ["grape", "passionfruit", "banana", "mango",
"orange", "raspberry", "apple", "blueberry"];
var sorted = new Collection(fruits)
.orderBy((fruit) => fruit.length)
.thenBy((fruit) => fruit);
for(var fruit in sorted) {
print(fruit);
}
}
Output:
mango
banana
orange
blueberry
raspberry
passionfruit
- 1. Cách sắp xếp danh sách các chuỗi?
- 2. Làm cách nào để sắp xếp danh sách trong Jinja2?
- 3. Làm cách nào để sắp xếp một chuỗi các chuỗi?
- 4. Sắp xếp danh sách mảng chuỗi [] mảng
- 5. Làm cách nào để mở rộng Danh sách trong Dart?
- 6. Sắp xếp danh sách chuỗi có ngày trong C#
- 7. Làm thế nào để sắp xếp danh sách IEnumerable?
- 8. Làm cách nào để sắp xếp các đối tượng Danh sách [Int] trong scala?
- 9. Cách sắp xếp danh sách theo danh sách khác?
- 10. Cách sắp xếp danh sách bằng số?
- 11. Làm thế nào để sắp xếp các chuỗi số nguyên?
- 12. Danh sách sắp xếp <String[]>
- 13. Thuật toán để sắp xếp danh sách các đối tượng
- 14. Sắp xếp danh sách trong Prolog
- 15. Làm cách nào để sắp xếp danh sách các ô có sử dụng grid.arrange?
- 16. Python cách sắp xếp danh sách này?
- 17. Danh sách sắp xếp Knockout.js
- 18. Làm cách nào để sắp xếp danh sách các giá trị thời gian của Python?
- 19. Làm thế nào để sắp xếp một danh sách các đối tượng java?
- 20. Sắp xếp các bản ghi Erlang trong một danh sách?
- 21. sắp xếp một danh sách các bản ghi trong Python
- 22. Python - Sắp xếp các yếu tố trong danh sách các danh sách
- 23. JAXB: Làm thế nào để sắp xếp các đối tượng trong danh sách?
- 24. Sắp xếp các mục trong hộp danh sách trong C#
- 25. Sắp xếp một danh sách từ một danh sách ID
- 26. Làm cách nào để sắp xếp các chuỗi trong NSMutableArray thành thứ tự bảng chữ cái?
- 27. Danh sách sắp xếp dựa trên danh sách khác
- 28. Làm cách nào để sắp xếp Tập hợp thành Danh sách trong Java?
- 29. Python - Cách sắp xếp danh sách các danh sách theo phần tử thứ tư trong mỗi danh sách?
- 30. Cách sắp xếp các mục danh sách bằng cách sử dụng thứ tự sắp xếp tùy chỉnh trong jQuery
Cảm ơn! Xin lỗi để phàn nàn nhưng trong khi tôi đang cố gắng để đánh giá cao tính linh hoạt rõ ràng của các bên trên, tôi không tìm thấy nó trực quan hoặc nội tuyến với kinh nghiệm ngôn ngữ trước đó. Các bạn có ai đó với một con chuột bằng gỗ vuông và một bộ râu màu xám dài sắp tới với một số thứ này không? :) –
Đây là một hiện vật lịch sử kỳ lạ. Bộ so sánh phải là tùy chọn. Nó được sử dụng để được, nhưng chúng tôi đã thay đổi cú pháp tham số tùy chọn một lúc trở lại, buộc chúng tôi phải thực hiện tất cả các thông số không tùy chọn trong một thời gian, bao gồm cả thông số này. Chúng tôi chưa có cơ hội sửa lỗi này và làm cho nó trở lại tùy chọn. – munificent
Cảm ơn @munificent rất vui khi biết rằng nó sẽ sớm được khắc phục. Xem lỗi http://code.google.com/p/dart/issues/detail?id=1235 –