2010-01-22 4 views
4

더 나은 프로그래밍 연습은 무엇입니까?TreeMap을 사용 하시거나 주문 하시길 권장합니다.

SQL에서 order by 절을 사용하거나 드롭 다운과 같은 경우 java에서 treemap 대 hashmap 결과를 저장하는 것이 더 좋습니까?

+3

이 질문은 작업중인 코드에 대한 세부 정보를 제공하면 더 명확 해집니다. 우리는 당신의 머리 속에있는 모든 것에 접근 할 수 없다는 것을 기억하십시오. – danben

+3

링크 된 해시 맵은 순서를 지정하지 않습니다. 입력 순서 만 보존합니다. Treemap을 생각할 수도 있습니다. –

+0

그건 맞는 스티브, 나는 Treemap 의미. – Shah

답변

2

성능에 대해 생각해 보면 큰 결과 집합은 특히 정렬 할 열의 색인이 생성 될 때 데이터베이스 끝에서 더 잘 정렬됩니다.

작은 데이터 세트의 경우 성능 차이가 크지 않을 수도 있지만 대부분의 경우 SQL의 Order By 절이 더 간단한 방법이라고 생각합니다.

그러나 이미 정렬 된 데이터를 사용하기 전에지도에 저장해야하는 경우 일반 HashMap 대신 LinkedHashMap을 사용해야합니다. LinkedHashMap은 HashMap이 실행되지 않는 동안 데이터를 삽입 순서로 유지하기 때문입니다.

데이터를 맵에 입력 할 때 자동으로 정렬하려면 TreeMap 또는 다른 정렬 된 맵 구현이 필요합니다.

+0

적합한 색인이있는 경우 데이터베이스는 원하는 순서로 레코드를 읽을 수 있으며 아무도 레코드를 정렬 할 필요가 없습니다. 쿼리에 따라 데이터베이스에서 레코드를 정렬해야 할 수 있습니다 (예 : GROUP BY 또는 UNION을 수행합니다. 어쨌든, SQL이 정렬을하도록하는 것이 확실하기 때문에 성능이 향상되지 않으면 간단한 코드를 사용하게 될 것입니다. 가능할 때마다 SQL은 모든 준비와 정렬 작업을 수행 할 수 있으므로 호출 프로그램은 레코드를 읽고 한 번에 하나씩 처리하여 구조에 넣지 않아도됩니다. – Jay

0

많은 것은 구현, 목록 크기 등에 따라 달라집니다. SQL 쿼리에서 순서를 수행하면 데이터베이스에 오버 헤드가 발생하고 정렬 작업을 수행하지 않아도됩니다. 응용 프로그램에서. 또한 응용 프로그램에서 사용하는 데이터 구조가 순서를 유지해야합니다. 즉, 결과를 해시 맵에 삽입하지 마십시오. 그러나 많은 것은 당신이 성취하고자하는 것에 대한 세부 사항에 달려 있습니다.

0

또한 "주문자"또는 Java 코드에서 원하는대로 정렬하기 위해 사용하려는 필드에 따라 다릅니다. 하지만 대부분의 경우 DB를 사용하여 주문을 수행합니다.

0

우선 ..

시도하여 SQL에 '에 의해 위해'당신이 항목을 넣어 순서를 다시 얻을 보장되지 않으므로로를 파괴하는 것입니다 HashMap의 사용. 따라서 SQL에서 'order by'를 사용하면 항목 순서를 유지하기 위해 저장소에 LinkedHashMap을 사용해야합니다.

유효한 비교기를 설정하면 TreeMap에서 주문합니다.

내 선호도는 목록의 크기와 사용법에 따라 결정됩니다. 많은 사람들이 매일이 목록에 액세스하고 그것을 리프레시하는 경우 자신의 사용자 인터페이스에서 주문을 처리하도록하는 것이 좋습니다.이 부분은 실제로 다릅니다.

관련 문제