我有對象的列表格式如下:如何創建重複列表項目的列表?
class myObj {
private String identifier;
public myObj(String identifier){
this.identifier = identifier;
}
}
List<myObj> allobjects = new ArrayList<myObj>();
allobjects.add(new myObj("123"));
allobjects.add(new myObj("123"));
allobjects.add(new myObj("123"));
allobjects.add(new myObj("123"));
allobjects.add(new myObj("1234"));
allobjects.add(new myObj("12345"));
allobjects.add(new myObj("12"));
allobjects.add(new myObj("12"));
什麼是提取重複的對象爲單獨列出的一個優雅的方法是什麼? 所以在上面的例子中返回一個包含兩個列表的新列表。所述第一列表 包含:
new myObj("123");
new myObj("123");
new myObj("123");
new myObj("123");
第二列表包含:
new myObj("12");
new myObj("12");
一種可能的解決方案是創建一個新對象:
List<List<myObj>> newList = new ArrayList<List<myObj>>
,然後在列表中的每個元素'allobjects'遍歷每個元素,並且對於包含多個元素的每個元素將其添加到列表中。然後在 當前元素的迭代結束時將新創建的列表添加到'newList'
這是可以接受的還是有其他解決方案嗎?
請問一個解決方案,獨特的元素也得到了自己的名單會好嗎? – durron597
@ durron597我可以忽略列表項目的大小== 1 –
使用自定義的「Comparator」(或創建新列表並對其進行排序)對您的列表進行排序。瀏覽排序的列表並檢測相鄰的重複項。這樣你的算法只能是* O(nlogn)*,而你提出的解決方案是* O(n²)*。 –
brimborium