【问题标题】:finding distinct elements of an unsorted string array查找未排序字符串数组的不同元素
【发布时间】:2014-12-25 18:51:48
【问题描述】:

我有一个字符串数组,它没有排序并且有重复的元素。我想计算不同的元素,但是当我调用我的方法时,它返回所有元素的数量,而不仅仅是不同的元素。有什么想法吗?

public static double countDistinctString(String[] array) {
        double distinctStrings = 0; 
        for (int j = 0; j < array.length; j++){ 
            String thisString = array[j]; 
            boolean seenThisStringBefore = false; 
            for (int i = 0; i < j; i++){ 
                if (thisString == array[i]){ 
                    seenThisStringBefore = true; 
                } 
            } 
            if (!seenThisStringBefore){ 
                distinctStrings++; 
            } 
        } 
        return distinctStrings; 
    }
}

【问题讨论】:

    标签: java arrays string duplicates distinct


    【解决方案1】:

    问题是您使用== 来比较字符串;请参阅How do I compare strings in Java? 了解为什么这不起作用。请改用if (thisString.equals(array[i]))

    【讨论】:

      【解决方案2】:

      这应该可以工作(我也对其进行了一些改进 - 使用 int 而不是 double,一旦找到匹配项就使用 break):

      public static double countDistinctString(String[] array) {
          int distinctStrings = 0; 
      
          for (int j = 0; j < array.length; j++) { 
              String currentString = array[j]; 
              boolean seenThisStringBefore = false; 
      
              for (int i = 0; i < j; i++){ 
                  if (currentString.equals(array[i])) { 
                      seenThisStringBefore = true;
                      break;
                  } 
              }
      
              if (!seenThisStringBefore) { 
                  distinctStrings++; 
              } 
          }
      
          return distinctStrings; 
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-30
        • 1970-01-01
        • 2021-05-12
        • 1970-01-01
        • 2013-03-06
        相关资源
        最近更新 更多