그래서, 나는 성능을 위해 use SparseArray instead of HashMap로되어있어 :Android JFC의 SparseArray가 호환되지 않는 이유는 무엇입니까?
그러나, SparseArray
이 JCF의 일부가 아니며 Collection
도 List
도 Map
를 구현하지 않습니다. 반면에 HashMap
은 Map
을 구현하고 JCF 호환 동작이 필요할 때 사용할 수있는 values()
을 제공합니다. 예를 들어, ArrayAdapter
및 다양한 사용자 정의 정렬 (값)에 사용합니다.
내 질문 3 배 :
- 왜 JCF 인터페이스를 구현하지
SparseArray
는 무엇입니까? 내 말은, 이러한 인터페이스를 구현하지 않은 이유는 무엇입니까 대부분의 메서드가 이미 있다는 사실을 알 수 있습니까? - 대신 JCF 인터페이스 을 구현하는 대체품이 있습니까? 아니면 쉽게 변환하여
SparseArray
성능을 유지할 수 있습니까? HashMap
몇 백 개의 요소가 실제로 많이 있습니까? 느린가요? 내 사용자가 실제로 알아 차릴 것입니까?
나는 깊이있는 답변을 찾고 있으며 신뢰할만한 사이트에 대한 참조를 선호합니다. SparseArray
이 JCF 인터페이스로 구현되지 않은 이유를 알고 있다고 생각되면 몇 가지 지원을 보여 주며 이해하도록 도와주세요. SparseArray
을 사용해야한다고 생각하면 ArrayAdapter
및 맞춤 정렬 (Comparator -esque solutions preferred)과 함께 사용하는 방법을 보여주세요. 더 나은 대안이있는 경우 API 문서, 라이브러리 또는 자습서에 대한 링크가 도움이 될 것입니다. 내가 HashMap
s를 고수해야한다고 생각한다면, SparseArray
의 성능 이점이 인터페이스 요구에 비해 왜 중요한지 설명하십시오.
"몇백 개의 요소가있는 HashMaps가 실제로 그렇게 느린가요? 사용자가 정말로 알아 차릴 것입니까?" - Traceview와 같은 도구를 사용하여 벤치 마크를 작성하고 테스트를 실행했을 때 무엇을 배웠습니까? – CommonsWare
@CommonsWare 절대로 "벤치 마크를 만들지 못했습니다." 왜 내가 이걸 할 수 있을까? 나는 컬렉션 성능을 테스트하지 않고 앱을 만들고 있습니다. Traceview를 실행했지만 "나쁘다"또는 "이게 좋다"라고 말할 시점이 없습니다. 모든 것이 잘 돌아갑니다. SparseArray를 사용하여 빌드 한 적이 없으므로 비교할 부분이 없습니다. 사실, 그렇게 할 실용적인 방법이 없습니다. 필자가 SparseArray를 사용해야한다고 말하는 린트 경고 만있다. 나는 그 경고를 무시합니까?내 코드를 완전히 리팩토링하는 데 시간을 투자합니까? – mawcsco
"왜 내가 이걸 할까?" - "수백 개의 요소가있는 HashMaps가 정말 느린가? 사용자들이 정말로 알아 차릴 것인가?" 'HashMap'을 어떻게, 어디서, 언제 사용하는지 모르기 때문에 그 누구도 그 것에 대답 할 수 없을 것입니다. "사실, 그렇게 할 실용적인 방법은 없습니다"- 당신이 당신의 앱을 아는 유일한 사람이기 때문에 우리는 그것을 액면 그대로 가져 가야 할 것입니다. "나는 그 경고를 무시합니까?" "SparseArray"를 사용하는 "실제적인 방법이 없다면, 선택의 여지가없는 것처럼 보일 것입니다. – CommonsWare