hashset输出重复数组及个数

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);
}