简体   繁体   中英

How to conditionally insert a Map into a list in Java if the list does not already include a map containing a key value pair

I have a list of HashMap objects in Java. I would like to conditionally add more HashMap objects to this list if the list does not already contain a HashMap having the same key value pair as in the new HashMap.

Here is an example HashMap list. Note that in reality, there are more keys. Here, I am just including "contact_id" for simplicity.

[{contact_id=16247115}, {contact_id=16247116}, {contact_id=16247117}, {contact_id=16247118}, {contact_id=16247119}]

Adding {contact_id=16247117} to this list should not be allowed. Adding {contact_id = 74857983} , should be allowed.

Ideally, I would like to be able to conditionally add several HashMaps into this list in one line of code. If I were not to perform the conditional check, I could just use the syntax listname.addAll(batchOfHashMaps) . I'd like to do something similar, but precluding redundant HashMaps in the list.

What is the most efficient way to achieve this conditional insert in Java?

I reckon there must be a more efficient solution than evaluating each element in the list inside a for-loop.

If you are only wanting to look at one key-value pair of the maps as an identifier, then you could use a Map instead of a List to hold everything. For example, Map<String, Map<String, String> mapOfMaps;

Then you could add one like:

mapOfMaps.putIfAbsent(mapToAdd.get("contact_id"), mapToAdd);

you could add multiple like:

batchOfHashMaps.forEach(m -> mapOfMaps.putIfAbsent(m.get("contact_id"), m));

To get a collection of your maps simply call values()

mapOfMaps.values();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM