我有一个数组,我想从中删除重复项.
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)
您可以获得两套,一套包含所有字幕,另一套包含副本
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)