Advertisement
KuoHsiangYu

ListToMap

May 23rd, 2020
1,841
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.86 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package com.sample;
  7.  
  8. import static java.lang.System.out;
  9. import java.util.Arrays;
  10. import java.util.HashMap;
  11. import java.util.Iterator;
  12. import java.util.List;
  13. import java.util.Map;
  14.  
  15. /**
  16.  *
  17.  * @author asus
  18.  */
  19. public class ListToMap {
  20.  
  21.     /**
  22.      * @param args the command line arguments
  23.      */
  24.     public static void main(String[] args) {
  25.         // TODO code application logic here
  26.  
  27.         // 初始輸入 ArrayList
  28.         List<String> items = Arrays.asList("蘋果", "蘋果", "香蕉", "蘋果", "柳丁", "香蕉", "椰子");
  29.  
  30.         // 第一個 HashMap 統計一個詞彙出現幾次
  31.         Map<String, Integer> itemsMap = new HashMap<String, Integer>();
  32.  
  33.         for (int i = 0, length = items.size(); i < length; i++) {
  34.             if (false == itemsMap.containsKey(items.get(i))) {
  35.                 // 如果是第一次出現的值,預設給他 1
  36.                 itemsMap.put(items.get(i), 1);
  37.             } else {
  38.                 // 如果是已經儲存的值,取出 value + 1 後再設回去
  39.                 int n = itemsMap.get(items.get(i));
  40.                 n = n + 1;
  41.                 itemsMap.put(items.get(i), n);
  42.             }
  43.         }
  44.  
  45.         // 第二個 HashMap 儲存 數字-字串
  46.         Map<Integer, String> itemsMapResult = new HashMap<Integer, String>();
  47.  
  48.         Iterator<Map.Entry<String, Integer>> itemsMapIterator = itemsMap.entrySet().iterator();
  49.         while (itemsMapIterator.hasNext()) {
  50.             Map.Entry<String, Integer> entry = itemsMapIterator.next();
  51.             if (false == itemsMapResult.containsKey(entry.getValue())) {
  52.                 // 如果是第一次出現的數字,塞 itemsMap 的 key值 給他。
  53.                 itemsMapResult.put(entry.getValue(), entry.getKey());
  54.             } else {
  55.                 // 如果是第二次 ... 第n次出現的數字,依序",xxx,xxx"設值
  56.                 String resultValue = itemsMapResult.get(entry.getValue());
  57.                 resultValue = resultValue + "," + entry.getKey();
  58.                 itemsMapResult.put(entry.getValue(), resultValue);
  59.             }
  60.         }
  61.  
  62.         Iterator<Map.Entry<Integer, String>> itemsMapResultIterator = itemsMapResult.entrySet().iterator();
  63.         while (itemsMapResultIterator.hasNext()) {
  64.             Map.Entry<Integer, String> entry = itemsMapResultIterator.next();
  65.             // 進行修飾把 value值前後加上[]中括號。
  66.             String result = entry.getValue();
  67.             itemsMapResult.put(entry.getKey(), "[" + result + "]");
  68.         }
  69.  
  70.         // 最後印出結果
  71.         out.println(itemsMapResult.toString());
  72.     }
  73.  
  74. }
  75.  
  76. // https://www.facebook.com/2242200042711015/posts/2579423612321988/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement