Thống kê nâng cao
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 53 trên 59.
Giờ chúng ta sẽ bổ sung các thống kê nâng cao bằng những phương thức của HashMap để tìm các từ xuất hiện nhiều nhất hoặc ít nhất và tính tỷ lệ phần trăm.
Thử thách
DễĐiều chỉnh chương trình để hiển thị:
- Tổng số từ
- Số từ riêng biệt
- Mỗi từ cùng số lần xuất hiện và tỷ lệ phần trăm trên tổng số từ, mỗi từ một dòng, theo thứ tự bảng chữ cái (
TreeMapgiữ các khóa theo thứ tự đã sắp xếp; nếu dùngHashMap, hãy sắp xếp các khóa trước khi in ra)
Ví dụ:
Đầu vào:
Coddy!Đầu ra mong đợi:
Total words: 1
Unique words: 1
Word statistics:
coddy: 1 (100.00%)Tự làm thử
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine();
String[] sentences = text.split("\\.");
String[][] textArray = new String[sentences.length][];
HashMap<String, Integer> wordCount = new HashMap<>();
for (int i = 0; i < sentences.length; i++) {
textArray[i] = sentences[i].trim().split(" ");
for (int j = 0; j < textArray[i].length; j++) {
if (!textArray[i][j].isEmpty()) {
String word = textArray[i][j]
.replaceAll("[^a-zA-Z ]", "")
.toLowerCase();
wordCount.put(word, wordCount.getOrDefault(word, 0) + 1);
}
}
}
System.out.println("Word counts:");
for (Map.Entry<String, Integer> entry : wordCount.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
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: HashMapTự luyện tập: Trình biên dịch Java online