tôi có một hashmap như thế này:Trong Java, bản đồ loại băm bởi key.length của nó()
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("java",4);
map.put("go",2);
map.put("objective-c",11);
map.put("c#",2);
bây giờ tôi muốn sắp xếp bản đồ này theo chiều dài then chốt của nó, nếu hai phím dài đều bình đẳng (ví dụ đi và C# cả hai chiều dài 2), sau đó được sắp xếp theo thứ tự alphba. nên kết quả tôi mong đợi để nhận được là cái gì đó như:
kết quả in: Objective-C, 11 java, 4 C#, 2 đi, 2
đây là attamp của riêng tôi, nhưng nó không làm việc tại tất cả ...
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("java",4);
map.put("go",2);
map.put("objective-c",11);
map.put("c#",2);
Map<String,Integer> treeMap = new TreeMap<String, Integer>(
new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length().compareTo(s2.length());
}
}
);
thực sự phương pháp 'compareTo' xuất hiện như màu đỏ (không có khả năng biên dịch) .... xin vui lòng ai đó giúp tôi với một số ví dụ mã ... tôi là một chút bối rối với cách sử dụng lớp so sánh để tùy chỉnh compa đối tượng lại ...
khi bạn chạy mã của bạn, kết quả là {C# = 2, java = 4, Objective-C = 11}. câu hỏi là "đi", 2 ở đâu? –
Do thực tế là TreeMap đang sử dụng Comparator và so sánh được định nghĩa để xử lý 2 chuỗi có chiều dài bằng nhau như nhau. Vì OP đã chơi với TreeMap nên tôi mở rộng câu trả lời của mình để sửa chỉ phần Comparator. – sol4me
ồ, bạn nghĩ gì về câu trả lời của tôi? kể từ khi op đã không đề cập rằng sử dụng treemap là bắt buộc tôi sử dụng một phong cách –