Java - Liệt kê số lần xuất hiện của các phần tử trong một mảng
Đề bài: Viết chương trình nhập một mảng số nguyên a0, a1, a2, …, an-1. Liệt kê số lần xuất hiện của các phần tử trong một mảng đã cho.
Lời giải
Trong bài này chúng tôi sử dụng TreeMap để lưu các từ tìm được và số lần xuất hiện của chúng trong mảng đã cho.
File: BaiTap21.java
package vn.kienthuclaptrinh.baitap.array; import java.util.Map; import java.util.Scanner; import java.util.TreeMap; /** * Chương trình liệt kê số lần xuất hiện các phần tử trong một mảng * nhập từ bàn phím trong java. * * @author kienthuclaptrinh.net */ public class BaiTap21 { public static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập số phần tử của mảng: "); int n = scanner.nextInt(); // khởi tạo arr int [] arr = new int [n]; System.out.print("Nhập các phần tử của mảng: \n"); for (int i = 0; i < n; i++) { System.out.printf("a[%d] = ", i); arr[i] = scanner.nextInt(); } // tìm số lần xuất hiện của các phần tử Map<Integer, Integer> map = new TreeMap<Integer, Integer>(); for (int i = 0; i < n; i++) { addElement(map, arr[i]); } System.out.print("Các phần tử xuất hiện 2 lần: \n"); for (Integer key : map.keySet()) { System.out.printf("%d xuất hiện %d lần.\n", key, map.get(key)); } } /** * Thêm từ vào map * * @param wordMap: map chứa các từ và số lần xuất hiện * @param sb: từ cần thêm vào wordMap */ public static void addElement(Map<Integer, Integer> map, int element) { if (map.containsKey(element)) { int count = map.get(element) + 1; map.put(element, count); } else { map.put(element, 1); } } }
Kết quả:
Nhập số phần tử của mảng: 10 Nhập các phần tử của mảng: a[0] = 1 a[1] = 2 a[2] = 3 a[3] = 4 a[4] = 1 a[5] = 2 a[6] = 2 a[7] = 5 a[8] = 6 a[9] = 7 Các phần tử xuất hiện 2 lần: 1 xuất hiện 2 lần. 2 xuất hiện 3 lần. 3 xuất hiện 1 lần. 4 xuất hiện 1 lần. 5 xuất hiện 1 lần. 6 xuất hiện 1 lần. 7 xuất hiện 1 lần.