如何从数组中获取唯一值

Cod*_*gry 13 java arrays

我有一个数组,我想从中删除重复项.

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);
Run Code Online (Sandbox Code Playgroud)

但这并没有给我Array的独特价值.

我的阵列: - {英文,法文,日文,俄文,中文字幕,英文,法文,日文,俄文,中文字幕}

输出: - [日语,俄语,法语,中文字幕],中文字幕,[英语,英语]

Boh*_*ian 41

你可以在java 7中的一行中完成它:

String[] unique = new HashSet<String>(Arrays.asList(array)).toArray(new String[0]);
Run Code Online (Sandbox Code Playgroud)

在Java 8中更简单,更简单:

String[] unique = Arrays.stream(array).distinct().toArray(String[]::new);
Run Code Online (Sandbox Code Playgroud)


Osc*_*nco 0

您可以获得两套,一套包含所有字幕,另一套包含副本

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);
}
Run Code Online (Sandbox Code Playgroud)