이 문제는 나를 미치게합니다. 나는 vectorA (float), vectorB (string1), vectorC (string2)가 평행하고 vectorA에서 복제본을 제거하고 싶습니다. 벡터 간의 일치도는 입니다. 아이디어가 있으십니까?병렬 목록을 동기화 상태로 유지하면서 중복 제거
답변
본 항목에 대해 set<float>
을 작성한 후 vectorA
중복 색인을 스캔 한 다음 중복 된 것으로 표시된 색인을 삭제하고 벡터 끝에서 다시 시작합니다.
Set<Float> seen = new HashSet<Float>();
List<Integer> del = new List<Integer>();
for (int i = 0 ; i != vectorA.size() ; i++) {
if (seen.add(vectorA[i])) {
del.add(i);
}
}
for (int i = del.size()-1 ; i >= 0 ; i--) {
vectorA.remove(del[i]);
vectorB.remove(del[i]);
vectorC.remove(del[i]);
}
그렇지 않으면 색인이 동기화되지 않기 때문에 되돌아 오는 것이 중요합니다.
thnx 올바른 논리를 가지고있는 것 같지만, java (?!)에서 그 방법을 찾을 수 없습니다. insert()? push_back()? –
@ user1296783 죄송합니다. Java 대신 C++ 코드를 썼습니다. 이제 작동합니다. – dasblinkenlight
del.elementAt (i)를 의미합니까? –
세 값을 조합하고 equals
및 hashCode
을 재정의하는 클래스를 만듭니다. 이러한 인스턴스를 세 개의 병렬 목록 대신 단일 목록에 추가하십시오. 중복 된 항목을 제거 할 준비가되면 (처음부터 유지하고 나중에 제거해야한다고 가정) LinkedHashSet
에 추가하고 ArrayList
으로 되돌립니다. LinkedHashSet
은 중복을 제거하는 동안 삽입 순서를 유지합니다 (중요하지 않은 경우 표준 HashSet
).
Set<Float> seen = new HashSet<Float>();
int uniques = 0;
for (int i = 0; i < n; i++) {
if (seen.add(vectorA[i])) {
vectorA[uniques] = vectorA[i];
vectorB[uniques] = vectorB[i];
vectorC[uniques] = vectorC[i];
uniques++;
}
}
하고 작업을 완료 한 후 다음 위치 uniques
후 모든 요소를 무시 (또는 새로운 배열로 모두 복사) :
class Triple {
float num;
String a;
String b;
public boolean equals(Object o) {
if (o == null || !(o instanceof Triple))
return false;
return num == ((Triple)o).num; // strict equality
}
public int hashCode() {
return Float.floatToRawIntBits(num);
}
}
List<Triple> removeDuplicates(List<Triple> items) {
return new ArrayList<Triple>(new LinkedHashSet<Triple>(items));
}
여기에 적절한 알고리즘, 단일 패스입니다.
- 1. 보기 모델을 동기화 상태로 유지하면서 라디오 버튼 선택 취소
- 2. "unmanaged"상태로 유지하면서 구조체를 마샬링
- 3. 중복 목록을 HashMap 항목 목록에서 제거
- 4. FragmentPager에 ListFragments를 동기화 상태로 유지
- 5. jQuery - js 배열과 DOM 객체의 목록을 동기화 상태로 유지 하시겠습니까?
- 6. PySide에서 QtTableWidget과 목록을 동기화 상태로 유지하는 올바른 방법은 무엇입니까?
- 7. MySQL 데이터베이스의 중복 항목 제거
- 8. List-LINQ에서 중복 제거
- 9. MasterViewController와 DetailViewController를 동기화 상태로 유지
- 10. CONTACT_ID - 동기화 된 상태로 유지하기
- 11. xls 파일에서 중복 제거
- 12. NSWindow를 마우스 상태로 유지하면서 항상 백그라운드에서 머물러야합니다.
- 13. 제거 중복
- 14. 제거 중복
- 15. 제거 중복
- 16. 중복 제거
- 17. IPython 병렬 컴퓨팅의 동기화 문제
- 18. 중첩 배열에서 중복 제거
- 19. 중복 목록을 목록에서 제거하고 목록을 보존합니다.
- 20. WPF DataGrid SelectedItems - 여러 항목을 선택된 상태로 유지하면서
- 21. 제거 동기화 프레임 워크
- 22. 목록을 사용하는 Ant의 병렬 작업
- 23. 자바에서 중복 코드 제거
- 24. hibernate hql에서 중복 제거
- 25. Dojo FilteringSelect에서 중복 제거
- 26. NSMutableArray 중복 항목 제거
- 27. 제거 중복 요소
- 28. 쿼리에서 중복 제거
- 29. 쿼리에서 중복 항목 제거
- 30. multimap은 중복 키를 제거
'vectorA'가 정렬 되었습니까? 정확한 복제본을 없애거나 일부 엡실론에서 중복을 시도하고 있습니까? –