Java - Viết chương trình đếm số lần xuất hiện của số lớn nhất có trong Map.
Viết chương trình nhập vào một dãy số bất kỳ từ bàn phím, việc nhập sẽ kết thúc khi số nhập vào là số 0. Sau đó tìm ra số có số lần xuất hiện nhiều nhất trong dãy. Nếu có nhiều số có số lần xuất hiện nhiều nhất và bằng nhau thì hiển thị tất cả các số đó ra.
Bài giải
-------------------- ######## --------------------
Hướng dẫn: Để giải bài này, đầu tiên chúng ta sẽ khai báo 2 Map: một Map lưu trữ các số người dùng nhập vào từ bàn phím, 1 Map lưu trữ các số có số lần xuất hiện nhiều nhất trong Map đầu tiên. Nếu số nhập vào đã có trong Map thứ nhất thì sẽ tăng số lần xuất hiện của số đó lên 1 và lưu vào trong Map đó, còn ngược lại thì cho số lần xuất hiện của số đó bằng 1. Hàm Collections.max() để tìm ra số lần xuất hiện nhiều nhất của 1 số có trong Map thứ nhất. Sau đó sẽ duyệt qua các entry có trong Map thứ nhất, nếu có entry nào có giá trị lớn hơn số maxTimes thì sẽ lưu giá trị đó vào trong Map thứ hai.

public static void main(String[] args) {
int number;
Scanner scanner = new Scanner(System.in);
// đối số 1 trong Map là number nhập vào
// đối số 2 là số lần xuất hiện của number đó
Map<Integer, Integer> mapInteger = new HashMap<>();
System.out.println("Nhập vào số. Nhập vào số 0 để kết thúc: ");
while ((number = scanner.nextInt()) != 0) {
// nếu số nhập vào chưa có trong mapInteger
// thì sẽ thêm vào trong mapInteger
// số đó có số lần xuất hiện là 1
// nếu đã có thì sẽ tăng số lần xuất hiện của số đó lên 1
if (!mapInteger.containsKey(number)) {
mapInteger.put(number, 1);
} else {
mapInteger.put(number, mapInteger.get(number) + 1);
}
}
// trả về maxTimes là số lần xuất hiện nhiều nhất
// trong mapInteger
int maxTimes = Collections.max(mapInteger.values());
// highestMapInteger sẽ lưu trữ
// số có số lần xuất hiện nhiều nhất
Map<Integer, Integer> highestMapTimes = new HashMap<>();
// duyệt qua từng phần tử của mapInteger
mapInteger.forEach((key, value) -> {
// nếu value nào trong mapInteger lớn hơn hoặc bằng maxNumber
// thì thêm key và value của số đó vào trong highestMapInteger
if (value >= maxTimes) {
highestMapTimes.put(key, value);
}
});
System.out.println("Số có số lần xuất hiện nhiều nhất là: ");
highestMapTimes.forEach((so, soLan) ->
System.out.println(so + " xuất hiện " + soLan + " lần"));
}
}
Kết quả sau khi biên dịch chương trình:
Câu hỏi thường gặp liên quan:

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng