Ôn tập: Thao tác với HashMap
Thuộc phần Logic và luồng chương trình trong hành trình Java của Coddy. Bài học 21 trên 59.
Thử thách
DễTạo một phương thức có tên processHashMap nhận một đối số:
- Một HashMap có tên
products, trong đó:- Các khóa đại diện cho tên sản phẩm (
String). - Các giá trị đại diện cho giá (
Double).
- Các khóa đại diện cho tên sản phẩm (
Các thao tác cần thực hiện
- Tìm sản phẩm có giá cao nhất.
- Nếu nhiều sản phẩm có cùng mức giá cao nhất, trả về bất kỳ sản phẩm nào trong số đó.
- Nếu HashMap trống, trả về chuỗi rỗng (
"").
- Lọc các sản phẩm có giá lớn hơn
50.00và lưu chúng vào một HashMap mới. - Tính giá trung bình của tất cả sản phẩm.
- Nếu HashMap trống, giá trung bình phải là
0.0.
- Nếu HashMap trống, giá trung bình phải là
Định dạng giá trị trả về
Phương thức cần trả về một HashMap mới với các cặp khóa-giá trị sau:
| Khóa | Giá trị |
|---|---|
"Highest" | Tên sản phẩm có giá cao nhất (String). |
"Filtered" | Một HashMap (HashMap<String, Double>) chỉ chứa các sản phẩm có giá lớn hơn 50.00. |
"Average" | Giá trung bình của tất cả sản phẩm (Double). |
Tự làm thử
import java.util.LinkedHashMap;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
public class Main {
public static HashMap<String, Object> processHashMap(HashMap<String, Double> products) {
// Viết code của bạn ở đây
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String productsString = scanner.nextLine();
// Chuyển chuỗi JSON thành HashMap
Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);
HashMap<String, Object> result = processHashMap(products);
// Sắp xếp map Filtered để đầu ra luôn nhất quán
Map<String, Double> filteredMap = (Map<String, Double>) result.get("Filtered");
if (filteredMap != null && !filteredMap.isEmpty()) {
Map<String, Double> sortedFiltered = filteredMap.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(a, b) -> b,
LinkedHashMap::new
));
result.put("Filtered", sortedFiltered);
}
System.out.println(result);
}
}Tất cả bài học trong Logic và luồng chương trình
1Mảng đa chiều
Kiến thức cơ bản về mảng 2DTruy cập phần tử trong mảng 2DVòng lặp lồng nhau với mảng 2DÔn tập về mảng 2DPhép cộng và phép trừ ma trậnMảng không đềuMảng 3D trở lênCác mẫu thường gặp với mảng 2DÔn tập về mảng2HashMap phần 1
HashMap là gì?Khai báo HashMapTruy cập giá trịKiểm tra khóa có tồn tạiChỉnh sửa từ điểnÔn tập: HashMap3HashMap phần 2
Phương thức của HashMapDuyệt bằng keySet()Duyệt bằng entrySet()HashMap lồng nhauÔn tập: Quản lý kho hàngÔn tập: Thao tác với HashMap6Luồng điều khiển nâng cao
Câu lệnh nhãnBiểu thức switchSo khớp mẫuMệnh đề bảo vệÔn tập: luồng điều khiểnTự luyện tập: Trình biên dịch Java online