2013-01-04 1 views
2

키와 정수로 정수가 포함 된 해시 맵을 값으로 사용하는 프로그램을 개발합니다. 린트 (Lint)가 SparseArray가 더 효율적이라는 경고 메시지를 계속 받고 있습니다. 동일한 내용을 읽었을 때 Link에 주어 졌으므로 인덱스에 간격이있을 수 있습니다. 그것이 실제로 의미하는 것은, 나는 얻을 수 없다."SparseArray - 인덱스에 간격이있을 수 있습니다"는 의미는 무엇입니까?

키가 1,5, 10이면 배열 크기는 인덱스 1, 5, 10으로 3이됩니다. (또는) 배열 크기는 1, 5, 10 개의 인덱스에 대해 개체가있는 11입니다. 나머지는 비어 있습니까?

나를 명확히하십시오.

답변

2

의 길이와 SparseArray의 결과로, 키 1, 귀하의 예제에서 5 & (10)를 가질 수있다. 그것이 가지고있는 것은 두 개의 배열입니다 - 하나는 키를 포함하고 다른 하나는 값을 포함합니다; 그래서 당신의 첫 번째 추론은 정확합니다.

5

SparseArray의 효율성 향상으로 인해 다른 구조 (다른 답변이 지적한대로)에,뿐만 아니라 인해 키로 int를 사용할 때 autoboxing을 피할 수 있다는 사실뿐만 아니라.

즉, 예를 들어, map.get(1), 실제로는 map.get(Integer.valueOf(1))에 해당하는 작업을 수행하고 있습니다. 즉, int 프리미티브를 Integer 클래스 인스턴스로 변환합니다.

으로는이 유형의 유형 변환이 없습니다. 단지 int 만 사용하고 있습니다. 자세한 내용은 autoboxing 링크를 확인하십시오.