Java ArrayList가 있다고 가정 해 봅시다. 이제 x 값의 인덱스를 찾고 싶습니다. 이 작업을 수행하는 가장 빠른 방법은 무엇입니까? IndexOf() 메서드 사용? 간단한 for 루프의 모든 값을 반복할까요? 멋진 알고리즘 사용? 우리는 약 50 개의 정수형 키에 대해 이야기하고 있습니다.리스트가 정렬 될 때리스트에서 값을 찾는 가장 좋은 방법
1
A
답변
14
Binary search하지만 50 개 항목이므로 누가 신경 써야합니까? 단순 선형 검색은 더 간단하며 50 개 항목의 성능 차이는 미미합니다.
편집 : 기본 제공 java.util.Collections binarySearch 메서드를 사용할 수도 있습니다. 해당 항목을 찾을 수없는 경우에도 삽입 포인터가 반환됩니다. 아이템이 실제로 원하는 것인지 확인하기 위해 여분의 수표를 만들어야 할 수도 있습니다. 포인터 @Matthew에게 감사드립니다.
6
tvanfosson이 맞습니다. 그 중 하나의 시간은 매우 낮으므로이 코드가 자주 실행되지 않는 한 별 차이가 없습니다.
그러나 Java에는 목록 (ArrayList 포함) Collections.binarySearch의 이진 검색 기능이 기본 제공됩니다.
1
키가 허용되는 분포이면 Interpolation Search은 실행 시간을 고려하면 매우 빠릅니다.
코딩 시간을 고려하면 IndexOf()
입니다 (또는 C#을 사용하고 Java를 모르지만) 데이터 유형에 사용할 수있는 경우 이진 검색을 내장 할 수 있습니다.
2
import java.util.ArrayList;
import java.util.Collections;
ArrayList myList = new ArrayList();
// ...fill with values
Collections.sort(myList);
int index = Collections.binarySearch(myList, "searchVal");
편집 : 테스트되지 않은 코드
+0
코드 주셔서 감사합니다 :) – Baversjo
관련 문제
- 1. 집합에서 되풀이 값을 찾는 가장 좋은 방법
- 2. 리스트가 동시에 액세스 될 때 Java 6에서 사용하기에 가장 좋은 방법
- 3. 정렬 된 목록에서 채도 값을 검색하는 가장 좋은 방법
- 4. MongoDB에서 가장 자주 발생하는 값을 찾는 가장 좋은 방법은 무엇입니까?
- 5. 좋은 값을 전달/반환하는 가장 좋은 방법
- 6. 가로 세로 비율을 찾는 가장 좋은 방법
- 7. opencv로 객체를 찾는 가장 좋은 방법
- 8. xml 피드의 업데이트를 찾는 가장 좋은 방법
- 9. 가장 좋은 조합을 찾는 알고리즘
- 10. 검색 값을 저장하는 가장 좋은 방법
- 11. 데이터 테이블의 값을 무효화하는 가장 좋은 방법
- 12. XML 태그 값을 검색하는 가장 좋은 방법
- 13. 가장 좋은 방법
- 14. 최종 사용자가 레일에서 정렬 순서를 지정하는 가장 좋은 방법
- 15. 가장 많이 찾는 주제를 찾는 방법
- 16. 가장 좋은 방법
- 17. 네트워크에서 장치를 찾는 가장 좋은 방법은 무엇입니까?
- 18. 정규식으로 함수를 찾는 가장 좋은 방법은 무엇입니까?
- 19. SQL Server에서 열의 기본값을 찾는 가장 좋은 방법
- 20. SQL Server 2008에서 SQL 잠금을 찾는 가장 좋은 방법
- 21. 웹 서비스에서 라이브 데이터를 찾는 가장 좋은 방법
- 22. Phonegap - 사용자의 국가 ISO 코드를 찾는 가장 좋은 방법
- 23. 가장 좋은 방법
- 24. cakePHP에서 1 페이지가 캐시 될 때 가장 좋은 방법
- 25. 프로세스가 완료 될 때까지 프로세스를 시작하고 차단하는 가장 좋은 방법
- 26. MYSQL에서 min() 값을 찾는 방법
- 27. 라디오 버튼 값을 찾는 방법
- 28. Access에서 테이블의 값을 찾는 방법
- 29. 가장 좋은 방법
- 30. ObservableCollection 정렬 - 가장 좋은 방법은 무엇입니까?
오십 키를 들면, 나는 완전히 동의합니다. 요즘 CPU 시간보다 개발자 시간이 중요합니다. IndexOf()를 사용하면됩니다. –
Java/has/this 기능을 제외하고. –
이진 검색이 최선의 방법입니다. 목록에는 현재 50 개의 항목 만있을 수 있지만 코드가 1 년 또는 2 년 내에 처리해야하는 내용을 알고 있습니다. –