2012-05-01 3 views
2

TreeSet 내의 특정 regNumber를 가진 Member를 검색하려고 시도하고 있습니다. 그러나 regNumber에는 TreeSet의 요소 순서와 관련이 없으며 성/이름 순서로 정렬됩니다.TreeSet의 특정 요소 검색

내가 지금하고있는 방법은 TreeSet의 모든 요소를 ​​반복하고 찾고있는 regNumber와 일치하는 요소를 반환하는 것입니다. 그게 좋은 연습인가요, 아니면 너무 비효율적입니까?

public class Members implements Comperable <Members> { 

private String firstName; 
private String lastName; 
private int regNumber; 

} 

PS에게 TreeSet의의 요소가 마지막/이름으로 정렬되어 있어야

+0

좋은 연습은 아니지만 이러한 모든 요구 사항이 필요한 경우 다른 작업을 수행 할 수 없습니다. –

+1

귀하의 질문은 귀하가 어떻게 컬렉션을 사용할 계획입니까? 특히, 왜 TreeSet을 사용하고 있습니까? 특정 regNumber를 가진 회원을 찾고 싶다면지도에 넣지 않는 것이 좋습니다 (regNumber가 고유하다고 가정). – amaidment

답변

8

당신은 이름으로 색인하고 regNumber에 의해 검색되는 사실 즉, 그 regNumber 당신이의 관점에서 정렬되지 않은 항목 모음. 따라서 모든 항목에 대해 선형 검색보다 더 잘 수행 할 수 없습니다.

더 나은 것을 원하면 regNumber을 해시 테이블 (HashMap 또는 무엇이든)의 키로 사용하고 원래 Member 개체를 참조로 사용할 수 있습니다. 그렇게하면 더 많은 공간을 사용하는 대신 더 효율적으로 검색 할 수 있습니다.

+1

regNumber를 해시 키로 사용하면 +1됩니다. reg 또는 이름별로 조회해야하는 경우 양방향 맵 (또는 두 개의 개별 해시 맵)을 사용하는 것을 고려하십시오. –

+0

또는 'TreeSet'을 사용해야하는 이유가있는 경우 'TreeMap'. –