Home » Android » java – When to use Android's ArrayMap instead of a HashMap?

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

Posted by: admin June 15, 2020 Leave a comment

Questions:

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?

How to&Answers:

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.

Answer:

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.

Answer:

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.