Java는 순서가 지정된 세트 형식입니다. 나는 C++이 가지고있는 것은 아니지만 자신을 구현하는 것이 어렵지 않습니다. Sun 클래스가 Java 클래스에서 한 것은 해시 테이블을 확장하여 각 항목을 해시 테이블에 동시에 삽입하고 이중 링크 목록에 보관하는 것이 었습니다. 특히 링크 된 목록을 구성하는 데 사용되는 항목을 미리 할당하는 경우 오버 헤드가 거의 없습니다.
내가 어디에 있든, 개인 벡터를 사용하여 항목을 저장하거나 클래스의 해시 테이블을 직접 구현하는 클래스를 작성합니다. 어떤 항목이 세트에 삽입 될 때, 그것이 해시 테이블에 있는지 확인하고, 그 안에 항목이 있으면 그 안에있는 항목을 선택적으로 바꿉니다. 그런 다음 해시 테이블에서 이전 항목을 찾고 새 요소를 가리 키도록 목록을 업데이트하면 완료됩니다.
새 요소를 삽입하려면 목록에서 새 요소를 사용해야한다는 점을 제외하고는 이전 요소를 다시 사용할 수 없습니다.
항목을 삭제하려면 목록을 가리키고 목록 요소를 비 웁니다.
관심있는 요소가 요소에서 직접 나오는 링크 된 목록의 일부를 가져와야하므로 이동하거나 이동할 때마다 체인을 걷지 않아도됩니다. 요소를 변경하십시오.
프로그램 실행 중에 이러한 항목이 많이 변경 될 것으로 예상되는 경우 목록 항목의 목록을 유지하여 매번 메모리를 할당하는 대신이 목록의 머리를 차지할 수 있습니다 새로운 요소를 추가해야합니다.
춤 링크 알고리즘을 살펴볼 수 있습니다.
중복 질문의 Greg 솔루션에 래퍼가 필요하지 않은 것 같습니다. 가장 고통스러운 방향으로 나를 가르쳐 주셔서 감사합니다. –