2013-04-19 1 views
2

그래서, 나는 성능을 위해 use SparseArray instead of HashMap로되어있어 :Android JFC의 SparseArray가 호환되지 않는 이유는 무엇입니까?

그러나, SparseArrayJCF의 일부가 아니며 CollectionListMap를 구현하지 않습니다. 반면에 HashMapMap을 구현하고 JCF 호환 동작이 필요할 때 사용할 수있는 values()을 제공합니다. 예를 들어, ArrayAdapter 및 다양한 사용자 정의 정렬 (값)에 사용합니다.

내 질문 3 배 :

  1. JCF 인터페이스를 구현하지 SparseArray는 무엇입니까? 내 말은, 이러한 인터페이스를 구현하지 않은 이유는 무엇입니까 대부분의 메서드가 이미 있다는 사실을 알 수 있습니까?
  2. 대신 JCF 인터페이스 을 구현하는 대체품이 있습니까? 아니면 쉽게 변환하여 SparseArray 성능을 유지할 수 있습니까?
  3. HashMap 몇 백 개의 요소가 실제로 많이 있습니까? 느린가요? 내 사용자가 실제로 알아 차릴 것입니까?

나는 깊이있는 답변을 찾고 있으며 신뢰할만한 사이트에 대한 참조를 선호합니다. SparseArray이 JCF 인터페이스로 구현되지 않은 이유를 알고 있다고 생각되면 몇 가지 지원을 보여 주며 이해하도록 도와주세요. SparseArray을 사용해야한다고 생각하면 ArrayAdapter 및 맞춤 정렬 (Comparator -esque solutions preferred)과 함께 사용하는 방법을 보여주세요. 더 나은 대안이있는 경우 API 문서, 라이브러리 또는 자습서에 대한 링크가 도움이 될 것입니다. 내가 HashMaps를 고수해야한다고 생각한다면, SparseArray의 성능 이점이 인터페이스 요구에 비해 왜 중요한지 설명하십시오.

+0

"몇백 개의 요소가있는 HashMaps가 실제로 그렇게 느린가요? 사용자가 정말로 알아 차릴 것입니까?" - Traceview와 같은 도구를 사용하여 벤치 마크를 작성하고 테스트를 실행했을 때 무엇을 배웠습니까? – CommonsWare

+1

@CommonsWare 절대로 "벤치 마크를 만들지 못했습니다." 왜 내가 이걸 할 수 있을까? 나는 컬렉션 성능을 테스트하지 않고 앱을 만들고 있습니다. Traceview를 실행했지만 "나쁘다"또는 "이게 좋다"라고 말할 시점이 없습니다. 모든 것이 잘 돌아갑니다. SparseArray를 사용하여 빌드 한 적이 없으므로 비교할 부분이 없습니다. 사실, 그렇게 할 실용적인 방법이 없습니다. 필자가 SparseArray를 사용해야한다고 말하는 린트 경고 만있다. 나는 그 경고를 무시합니까?내 코드를 완전히 리팩토링하는 데 시간을 투자합니까? – mawcsco

+0

"왜 내가 이걸 할까?" - "수백 개의 요소가있는 HashMaps가 정말 느린가? 사용자들이 정말로 알아 차릴 것인가?" 'HashMap'을 어떻게, 어디서, 언제 사용하는지 모르기 때문에 그 누구도 그 것에 대답 할 수 없을 것입니다. "사실, 그렇게 할 실용적인 방법은 없습니다"- 당신이 당신의 앱을 아는 유일한 사람이기 때문에 우리는 그것을 액면 그대로 가져 가야 할 것입니다. "나는 그 경고를 무시합니까?" "SparseArray"를 사용하는 "실제적인 방법이 없다면, 선택의 여지가없는 것처럼 보일 것입니다. – CommonsWare

답변

3

어떤 방식으로 당신이 언급하고있는 다양한 콜렉션 인터페이스 (자바가 아닌 안드로이드 내)를 선행한다. 제 감각은 다양한 JCF 인터페이스를 지원하지 않는다는 것입니다. 왜냐하면 코드가 작성된 시점에 존재하지 않았기 때문에 아무도 그 이유를 찾지 못했기 때문입니다. (2007 년 초까지 제네릭을 사용하지 않았습니다.)

향상된 SparseArray가 유용 할 경우 고품질의 패치를 언제나 환영합니다.

1

아마도 < Object, Object>이지만 SparseArray에는 기본 키가 있기 때문일 수 있습니다.

는 일반적으로 3

전과로 대체지도, 그래,하지만 자신의 경우에 사실이라면 하나 측정하고 볼 수

SparseArray.java의 첫 번째 버전 월에 작성되었습니다
+0

Map 성능 저하? List 인터페이스는 어떻습니까? – mawcsco

+0

Java Puzzlers http://www.amazon.com/Java-Puzzlers-Traps-Pitfalls-Corner/dp/032133678X, 내가 잘못 본 것이 아니라면, 복싱 - 언 박싱이 성능에 많은 영향을 미친다고 설명합니다. 나는 그것에 아주 틀릴지도 모르지만 더 나은 체크 –

+0

당신은 당신의 응답에 자세히 설명 할 수 있는가? # 1 "어쩌면"(아마 "아마도"라고 추측 할 수 있습니다.) 이상을 알고 싶습니다. JCF가 구현되지 않은 이유를 찾고 있습니다. # 2 나는 이미 가지고있는 해답 대신에 대안을 찾고있다. # 3 코드의 많은 부분을 완전히 다시 작성하지 않고 SparseArray로 전환 할 수 없으므로 "측정"할 실제적인 방법이 없습니다. 제가 주제와 관련하여 찾은 것은 제가 링크 한 기사입니다. 나는 더 많은 추측이 아니라 더 많은 정보가 필요합니다. – mawcsco