2011-03-18 3 views
0

빠른 삽입 기능과 빠른 검색 기능을 제공하며 순서대로 반환 될 수있는 데이터 구조가 필요합니다. 이것은 트리 맵처럼 들리지만, 저장하고있는 키의 순서가 아닌 생성 시간을 기반으로하는 요소의 순서가 필요합니다.Java TreeMap 대안

다른 말로하면, 나는 (문자열 인) 키를 기반으로 삽입하고 검색 할 수 있기를 원하지만 생성 시간 (날짜)의 순서로 항목을 다시 가져 오려고합니다. 물론이 작업을 최대한 빨리 수행하고 자체 데이터 형식을 만들지 않기를 바랍니다.

이 경우 삽입 및 검색을 위해 키를 사용하고 결과를 정렬하기 때문에 트리 맵이 작동하지 않습니다. 내 요구 사항을 충족시키는 다른 표준 데이터 유형이 있습니까?

+3

날짜를 고려하고 일반'TreeMap' 구현을 사용하기 위해 'Comparable'을 구현하여 compareTo 메소드를 구현하지 않는 이유는 무엇입니까? – adarshr

+0

어쩌면 내가 당신의 의견을 오해 오전하지만 나무지도에 대한 생성자는 키의 유형을 가진 Comparable 값을 가지지 않는다. (내 생성 시간은 값 객체에있다) –

답변

1

지도와 TreeSet을 사용 하시겠습니까?

하나의지도 < 문자열, 객체 > 키/값 쌍만 저장하기. TreeMap 일 필요는 없습니다. 당신은 그 맵핑을 위해 맵을 사용하지 않기 때문입니다.

트리 집합 < 개체 >은 정렬에 사용됩니다.

사용자가 직접 만든 하나의 래퍼 맵 클래스에서 2 개의 컬렉션 인스턴스를 항상 래핑 할 수 있습니다. 하나의지도처럼 보이게하려면 정말로 필요합니다. 선택한 Comparator가 생성 날짜를 사용하는지 확인하십시오.

다른 사람들은 LinkedHashMap을 제안하고 있습니다. 그러나 나는 당신이 "삽입 명령"을 유지하기를 원하지 않는다고 생각합니다. 대신에 어떤 타입의 Comparator (Object.equals 일 가능성이 있습니다)에 의해 소트하고 싶습니다.

0

질문을 올바르게 이해하면 Comparator을 직접 작성하고 public TreeMap(Comparator<? super K> comparator) 생성자를 사용할 수 있습니다.

+0

생성자는 키 유형과 비교기 만 비교한다. . 생성 시간은 키가 아닌 값 객체의 일부이므로 작동하지 않습니다. –