我有一個值爲{「16」,「b」,「c」,「d」,「e」,「16」,「 F」, 「G」, 「16」, 「b」}; 在這16和b重複,所以我想刪除它們的所有條目,我需要輸出爲c,d,e,f,g。以下程序正常工作。有更好的解決方案如何刪除一個元素的所有發生如果它在一個arraylist中重複
public class Test {
public static void main(String[] args) {
ArrayList <String> l = new ArrayList <String>();
String[] str = {
"16",
"b",
"c",
"d",
"e",
"16",
"f",
"g",
"16",
"b"
};
for (String s: str) {
l.add(s);
}
List ll = removeDups(l);
l.removeAll(ll);
System.out.println("Final List " + l);
}
private static List <String> removeDups(ArrayList <String> l) {
List <String> ll = new ArrayList <String>();
for (String a: l) {
int x = Collections.frequency(l, a);
if (x > 1) {
ll.add(a);
}
}
return ll;
}
}
請在發佈Stackoverflow問題之前解釋代碼或發表評論。它幫助每個人。 –
實際上,'removeDups'方法實際上應該稱爲'findDups',因爲它實際上並沒有刪除任何東西;它只是_finds_重複的項目。如果'l.removeAll(ll)'這一行被移到'removeDups'內,那麼_then_'removeDups'實際上會有這個名字。 –
考慮Collections.frequency的命令是'O(n)',你可以使用Hash地圖做得更好。 –