找到未排序的字符串数组的不同元素

时间:2014-12-25 18:51:49

标签: java arrays string duplicates distinct

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这应该有效(我还改进了一点 - 使用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; 
}