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[];

}

}


新しい進歩: わかりました、私の平凡な頭はここまで来ました: (そして解決策は機能します) Duplicate 要素の一意の配列を出力します。しかし、メソッドを呼び出して、同じコードを実装する必要があります。どんな助けでも大歓迎です。

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

このようなものはうまくいくはずです。私が 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 に答える
1

簡単なオプションの 1 つは、配列の代わりにSetlike コンテナーを使用することです。一意の値のみが存在することが自動的に保証されます。

TreeSetHashSetの例を見ることができます。

于 2012-12-18T01:05:23.943 に答える
0

重複を検出するには、それが質問の場合、配列のすべての要素をセットに追加します。set.add() が false を返す場合、それは重複であるため、この要素を重複の結果リストに追加できます。
または、質問が重複のない値を返すことを意味している場合は、セットを破棄するか、セットをリストに変換してから返すことができます。

于 2012-12-18T01:08:37.750 に答える