0

我是java新手,对这个问题感到困惑。这就是我到目前为止提出的。我还在努力,如果我有任何进展,我会在这里发布。

public class charArray {

public static void main(String[] args) {

    String[] strArray = new String[] {"apple", "ball", "cat", "apple", "ball", "apple"};
    //output should be ["apple", "ball"]

    checkDuplicate(strArray);
}
public static String[] checkDuplicate(String[] strArray){
    String[] newArray = new String[]{};
    for(int i = 0; i < strArray.length; i++){

        for(int j = 0; j < i; j++){
            if (strArray[i].equals(srtArray[j])){
                newArray = strArray[i];
            }
        }

    }
    return newArray[];

}

}


新进展:好的,我平庸的头脑已经走到了这一步:(并且解决方案有效)它打印出独特的重复元素数组。但是现在我需要通过调用一个方法来实现相同的代码。任何帮助表示赞赏。

import java.util.*;

public class setChar {

public static void main(String[] args) {
    String[] strArray = new String[] {"apple", "ball", "cat", "apple", "ball", "apple"};
    Set set = new HashSet();
    Set uniqueSet = new HashSet();
    for(int i = 0; i < strArray.length ; i++ ){
        boolean b = set.add(strArray[i]);
        if(b == false){
            uniqueSet.add(strArray[i]);
        }
    }
    Iterator it = uniqueSet.iterator();
    while (it.hasNext()){
        System.out.println(it.next());
    }
}

}

输出是: 球苹果


最后用方法实现,具有正确的返回类型。请让我知道,如果这可以进一步优化。谢谢大家的建议。这是工作代码:

public class retUnique {

public static void main(String[] args) {
    String[] strArray = new String[] {"apple", "ball", "cat", "apple", "ball", "apple"};

    System.out.println(printUnique(strArray));
}

public static Set<String> printUnique(String[] strArray){
    Set<String> set = new HashSet<String>();
    Set<String> uniqueSet = new HashSet<String>();
    for(int i = 0; i < strArray.length ; i++ ){
        boolean b = set.add(strArray[i]);
        if(b == false){
            uniqueSet.add(strArray[i]);
        }
    }
    return(uniqueSet);
}

}
4

3 回答 3

1

一个简单的选择是使用Set类似容器而不是数组。它将自动确保仅存在唯一值。

您可以查看TreeSetHashSet的示例。

于 2012-12-18T01:05:23.943 回答
1

我相信这样的事情应该有效。自从我用 Java 编码以来已经有一段时间了,所以如果有人想进行编辑,请做。

public String[] returnDups(String[] strArray) {
    Set<String> set = new HashSet<String>(strArray);
    return set.toArray(new String[0]);
}

但大家一直在建议的是正确的想法。集合使删除重复项变得非常容易,因此您应该利用它们。让我们不要重新发明轮子。

于 2012-12-18T01:15:09.720 回答
0

要检测重复项,如果这是您的问题,请将数组的所有元素添加到 Set,如果 set.add() 返回 false,则它是重复项,因此您可以将此元素添加到重复项的结果列表中。
或者,如果您的问题是要返回没有重复的值,那么您可以重新设置集合,或者在返回之前将集合转换为列表。

于 2012-12-18T01:08:37.750 回答