hashset输出重复数组及个数
问题描述:
有一个字符串数组,数组元素为[ aw , we , ja , la , we , er , sc , er , la , qq ],利用 HashSet 集合,输出所有重复的字符串并统计共有几个重复元素。
答
public static void main(String[] args) {
String[] arr= { "aw" , "we" , "ja" , "la" , "we" , "er" , "sc" , "er" , "la" , "qq"};
Map<String ,Integer> count = new HashMap<>();
for(int i = 0;i<arr.length;i++){
int num =0;
for(int j =i+1;j<arr.length;j++){
if(arr[i].equals(arr[j])){
num++;
}
}
if(num!=0){
count.put(arr[i],num);
}
}
for(Map.Entry<String, Integer> entry : count.entrySet()){
System.out.println("重复的字符串为:"+entry.getKey()+" 该字符串重复的个数为:"+entry.getValue());
}
}
答
这个题目可以利用HashSet.add()的返回值可以直接处理,代码如下
public static void main(String[] args) {
// 字符串数组
String[] arr= { "aw" , "we" , "ja" , "la" , "we" , "er" , "sc" , "er" , "la" , "qq"};
Set<String> set = new HashSet<>();
// 重复数据计数
int num = 0;
for (int i = 0; i < arr.length; i++) {
// 利用HashSet的add方法添加,如果重复添加返回结果为true,未重复添加结果为false
boolean add = set.add(arr[i]);
if (!add){
// 重复数量+1
num++;
// 打印出这个重复数据
System.out.println(arr[i]);
}
}
System.out.println("重复数据个数为:" + num);
}