本題目能夠從宏觀上理解list、set、map三大集合的特點:
解決思路是:使用一個map,key用來記錄list中的數據,我們知道set集合不允許元素重復,正好在map的jdk8的api中有一個keySet()方法如下
說明了hashmap的key是唯一的,我們利用這個特性然后用value用來記錄重復數據的個數,然后操作map來獲取list中的重復數據即可
完整代碼如下:
package com.Jevin.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test03 { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("a"); list.add("a"); list.add("a"); list.add("b"); list.add("b"); list.add("c"); list.add("d"); list.add("d"); Map<String,Integer> map = new HashMap<>(); for(String str:list){ Integer i = 1; //定義一個計數器,用來記錄重復數據的個數 if(map.get(str) != null){ i=map.get(str)+1; } map.put(str,i); } System.out.println("重復數據的個數:"+map.toString()); System.out.print("重復的數據為:"); for(String s:map.keySet()){ if(map.get(s) > 1){ System.out.print(s+" "); } } } }
執行結果如下:
友情提示:相關類似的集合去重操作或統計重復元素的操作可以參照本例中的核心代碼稍作修改即可