Kaloyan Roussev
Kaloyan Roussev

Reputation: 14711

When to use Android's ArrayMap instead of a HashMap?

Android have their own implementation of HashMap, which doesnt use Autoboxing and it is somehow better for performance (CPU or RAM)?

https://developer.android.com/reference/android/support/v4/util/ArrayMap.html

From what I read here, I should replace my HashMap objects with ArrayMap objects if I have HashMaps whose size is below hundreds of records and will be frequently written to. And there is no point in replacing my HashMaps with ArrayMaps if they are going to contain hundreds of objects and will be written to once and read frequently. Am I Correct?

Upvotes: 13

Views: 12626

Answers (3)

BladeCoder
BladeCoder

Reputation: 12929

ArrayMap uses way less memory than HashMap and is recommended for up to a few hundred items, especially if the map is not updated frequently. Spending less time allocating and freeing memory may also provide some general performance gains.

Update performance is a bit worse because any insert requires an array copy. Read performance is comparable for a small number of items and uses binary search.

Upvotes: 6

Shin-chan
Shin-chan

Reputation: 899

You should take a look at this video : https://www.youtube.com/watch?v=ORgucLTtTDI
Perfect situations:
1. small number of items (< 1000) with a lots of accesses or the insertions and deletions are infrequent enough that the overhead of doing so is not really noticed.
2. containers of maps - maps of maps where the submaps tends to have low number of items and often iterate over then a lot of time.

Upvotes: 15

Alexander
Alexander

Reputation: 48232

Is there any reason for you to attempt such a replacement?

If it's to improve performance then you have to make measures before and after the replacement and see if the replacements helped.

Probably, not worth of the effort.

Upvotes: 5

Related Questions