20

重複したアイテムを削除したい配列があります。

for(int data1=startpos;data1<=lastrow;data1++) {
    String movie_soundtrk=cells.getCell(data1,Mmovie_sndtrk_cl).getValue().toString();
    al.add(movie_soundtrk);
}

String commaSeparated=al.toString();
String [] items = commaSeparated.split(",");
String[] trimmedArray = new String[items.length];
for (int i = 0; i < items.length; i++) {
    trimmedArray[i] = items[i].trim();
}

Set<String> set = new HashSet<String>();
Collections.addAll(set, trimmedArray);

System.out.println(set);

しかし、これは配列からの一意の値を私に与えていません。

My Array:- {英語、フランス語、日本語、ロシア語、中国語字幕、英語、フランス語、日本語、ロシア語、中国語字幕}

出力 :- [日本語、ロシア語、フランス語、中国語字幕]、中国語字幕、[英語、英語]

4

13 に答える 13

55

Java 7 では 1 行で実行できます。

String[] unique = new HashSet<String>(Arrays.asList(array)).toArray(new String[0]);

Java 8では短くて簡単です:

String[] unique = Arrays.stream(array).distinct().toArray(String[]::new);
于 2012-12-10T08:15:30.937 に答える
3

HashSet がその役割を果たします。

これを試すことができます:

List<String> newList = new ArrayList<String>(new HashSet<String>(oldList));
于 2015-10-27T08:43:50.887 に答える
0

2つのセットを取得できます。1つはすべての字幕付きで、もう1つは重複したものです。

String[] trimmedArray = new String[items.length];
Set<String> subtitles = new HashSet<String>();
Set<String> duplicatedSubtitles = new HashSet<String>();

foreach(String subtitle : trimmedArray){
    subtitle = subtitle.trim();
    if(subtitles.contains(subtitle)){
        duplicatedSubtitles.add(subtitle);
    }
    subtitles.add(subtitle);
}
于 2012-12-10T08:07:36.287 に答える
0

これの代わりに試してください

Set<String> set = new HashSet<String>();

これを呼び出す

set.addAll(trimmedArray);
于 2012-12-10T08:09:41.573 に答える
0

最初に項目を配列に追加してから文字列に変換したのはなぜですか? 配列を反復処理して Set にコピーするだけです。次に、一意の値を保持する新しく作成されたセットを出力します。

Set<String> set = new HashSet<String>();
for (int i = 0; i < al.length; i++) {
    set.add(al[i]);
}

for (String str : set) {
    System.out.println(str);
}
于 2012-12-10T08:12:34.640 に答える
0

アレイが次の 2 つの条件を満たしている場合 -:

  1. 重複と単一の値のみが許可されます (3 重以上は許可されません)

  2. 配列には一意の値が 1 つだけ存在する必要があります

     // Use Bitwise 'exclusive or' operator to find unique value 
     int result = array[0];
     for (int i = 1; i < array.length; i++) {
         result  ^= array[i];
     }
     System.out.println(result);
    

    } }

于 2021-06-21T02:50:32.980 に答える
0
int arr[] = {1,1,2,2,3,3,4,5,5,6}; 
for(int i=0; i<arr.length; i++) {
int count = 0;
    for(int j=0; j<arr.length; j++) {
        if ((arr[i] == arr[j]) && (i!=j)) {
            count++ ;
        }
    }
        if(count==0) {
            System.out.println(arr[i]);
        }
}
于 2019-03-23T22:14:09.287 に答える