我有对象的列表格式如下:如何创建重复列表项目的列表?
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