Mohit Deshpande
Mohit Deshpande

Reputation: 55227

Fastest and most efficient way of searching a key-value pair in Java?

DISCLAIMER:
This question was not meant to be argumentative!

What is fastest and less memory draining way of searching a key-value pair? I will be storing items in a key-value like relation and I need to access them quickly. Should I use a SQLite database? A Map? A Hashtable? A HashMap? Please give some advantages/disadvantages of using whatever method of searching.

Upvotes: 10

Views: 6595

Answers (2)

Esko
Esko

Reputation: 29377

Any hash-based Map structure is the way to go as long as your hash function for the key is efficient. You can use value id:s as the result for the lookup to conserve memory during search.

If your data is already in database though, you can leave this search entirely to the RDBMS, after all they're made for this stuff.

Upvotes: 11

Péter Török
Péter Török

Reputation: 116266

If your data is in memory, Maps in general are your friends - they are meant for this.

Don't use a Hashtable however. It is much slower than newer Map implementations. because its methods are synchronized, which most of the time is not needed (and when needed, there is a much better alternative - see below).

In single-threaded context, HashMap is probably going to be OK.

If you need thread safety, use a ConcurrentHashMap.

Upvotes: 7

Related Questions