2017-05-10 6 views
-1

버퍼를 구현하고 있지만 사용해야하는 구조가 확실하지 않습니다.버퍼를위한 최상의 구조

LinkedList 중 하나를 생각하고 있거나 값을 저장하지 않아도 HashMap (하지만 단순히 null 값을 넣을 수 있음)을 생각하고있었습니다.

최대한의 효율성으로 나는 containsKey의 복잡성이 O (1)이기 때문에 HashMap을 사용하려고 생각했습니다.

대신에 LinkedList.contains의 복잡도는 O (N)입니다.

그러나 여전히 LinkedList 또는 다른 구조를 삭제해야하는지 잘 모르겠습니다.

감사합니다.

답변

0

버퍼는 가능한 한 빠르므로 array (대부분의 alghoritms 사용)을 사용하십시오. 어떤 복잡도 O (1)이 가장 좋습니다. 다른 구조는 putremove 방법으로 인해 해시 충돌의 자주라고 매우 느린, 할 수있다, 심지어 O (1) 접근, 방법 (추가 시간), 또한 hashmap를 호출해야합니다.

+0

하지만 요소를 임의로 제거해야합니다. 배열을 사용하여 제거하려는 요소를 찾으려면 배열을 한 번만 반복해야합니다. – Betrayal

+0

당신은 이것을 할 수 있습니다 : 배열에 객체를 넣고, 객체에 사용 된 색인을 첨부하십시오. 제거 할 때 배열의 위치를 ​​찾기 위해 연결된 색인을 사용하기 만하면됩니다. – matoni

+0

예, 할 수 있습니다. 물론 셀을 null로 설정한다는 의미를 삭제하면됩니다. 맞습니까? 그렇지 않으면 모든 제거마다 새로운 배열을 생성하고 나머지 요소를 복사해야합니다. – Betrayal