本题目能够从宏观上理解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+" "); } } } }
执行结果如下:
友情提示:相关类似的集合去重操作或统计重复元素的操作可以参照本例中的核心代码稍作修改即可