1. 程式人生 > 其它 >java筆試題(六)

java筆試題(六)

import java.util.*;
import java.util.stream.Stream;

public class Javatest89 {
    /**
     * 集合-Map(HashMap)、Collections工具類
     * 練習3:統計一個字串中每個字元出現的次數,儲存到HashMap集合中,
     * 通過排序,列印輸出次數最多的前三個字元及次數
     * 
     * 執行結果:
     * 請輸入一個字串:
     * abbcccdddd
     * **********方法一***********
     * d=4
     * c=3
     * b=2
     * **********方法二***********
     * a=1
     * b=2
     * c=3
     * d=4
     * **********方法三***********
     * d=4
     * c=3
     * b=2
     * **********方法四***********
     * b出現次數:2
     * c出現次數:3
     * d出現次數:4
     
*/ public static void main(String[] args) { System.out.println("請輸入一個字串:"); Scanner sc = new Scanner(System.in); String s = sc.nextLine(); HashMap<Character,Integer> map = new HashMap<>(); //1、遍歷字串,統計每個字元出現的次數,並儲存至map集合 for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i); if(map.containsKey(c)){ map.put(c,map.get(c)+1); } else{ map.put(c,1); } } //2、根據出現次數多少進行排序 //第一種方法,List的sort方法 //2.1 轉換成List List<Map.Entry<Character,Integer>> entry = new
ArrayList<>(map.entrySet()); //2.2 根據value進行排序 entry.sort(Map.Entry.comparingByValue()); System.out.println("**********方法一***********"); for (int i = entry.size() -1 ; i > entry.size() -4; i--) { System.out.println(entry.get(i)); } //第二種方法,sorted方法 Stream<Map.Entry<Character,Integer>> sorted = map.entrySet().stream().sorted(Map.Entry.comparingByValue()); System.out.println("**********方法二***********"); sorted.forEach(System.out::println); //第三種方法,Comparator的sort方法 List<Map.Entry<Character,Integer>> list = new ArrayList<>(map.entrySet()); Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>() { @Override public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) { return o1.getValue().compareTo(o2.getValue()); } }); System.out.println("**********方法三***********"); for (int i = list.size() -1; i > list.size() -4 ; i--) { System.out.println(list.get(i)); } //第四種方法,自定義方法 List<Integer> list1 = new ArrayList<>(); for (Integer value:map.values()) { list1.add(value); } System.out.println("**********方法四***********"); list1.sort(Integer::compareTo); for (Map.Entry<Character,Integer> entry1:map.entrySet()) { if(entry1.getValue() == list1.get(list1.size() -1) || entry1.getValue() == list1.get(list1.size() -2) || entry1.getValue() == list1.get(list1.size() -3)){ System.out.println(entry1.getKey() + "出現次數:" + entry1.getValue()); } } } }