나는이 형식으로 개체의 목록이 있습니다중복 된 목록 항목의 목록을 만드는 방법은 무엇입니까?
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"));
별도의 목록에 중복 된 개체를 추출하는 우아한 방법은 무엇입니까? 위의 예제에서 두 개의 목록을 포함하는 새 List가 반환됩니다. 첫 번째 목록 가 포함
new myObj("123");
new myObj("123");
new myObj("123");
new myObj("123");
번째 목록이 포함 목록의 각 요소에 다음
List<List<myObj>> newList = new ArrayList<List<myObj>>
: 그리고
new myObj("12");
new myObj("12");
가능한 해결책은 새로운 객체를 생성하는 것이다 'allobjects'는 각 요소를 반복하고 두 번 이상 포함 된 각 요소를 목록에 추가합니다. 그런 다음 에서 현재 요소의 반복 끝에 새롭게 생성 된 목록을 'newList'에 추가하십시오.
이게 맞습니까? 아니면 다른 해결책이 있습니까?
고유 한 요소가 자체 목록을 가지고있는 솔루션도 괜찮습니까? – durron597
@ durron597 필자는 무시할 수있다. size == 1의 목록 항목 –
사용자 정의 'Comparator'를 사용하여 목록을 정렬 (또는 새 목록을 만들고 그 목록을 정렬)한다. 정렬 된 목록을 살펴보고 인접한 중복을 감지하십시오. 이 방법은 제안 된 솔루션이 * O (n²) * 인 동안 알고리즘은 * O (nlogn) * 일뿐입니다. –
brimborium