Union из двух или более (хэш-карт)

У меня есть две карты, содержащие объекты одного и того же типа:

Map<String, TaskJSO> a = new HashMap<String, TaskJSO>();
Map<String, TaskJSO> b = new HashMap<String, TaskJSO>();

public class TaskJSO { String id; }

Ключи карты - это свойства "id".

a.put(taskJSO.getId(), taskJSO);

Я хочу получить список со: всеми значениями в "Карта b" + все значения в «Карте a», которых нет на «Карте b».

Каков самый быстрый способ выполнения этой операции?

Спасибо

РЕДАКТИРОВАТЬ: сравнение выполняется по идентификатору . Итак, два TaskJSO считаются равными, если у них одинаковый идентификатор (метод equals переопределяется).

Я намерен узнать, какой способ выполнения этой операции является наиболее быстрым с точки зрения производительности. Например, есть ли разница, если я провожу «сравнение» на карте (как предлагает Питер):

Map<String, TaskJSO> ab = new HashMap<String, TaskJSO>(a);
ab.putAll(b);
ab.values()

или вместо этого я использую набор (как предлагает Нишант):

Set s = new Hashset();
s.addAll(a.values());
s.addAll(b.values());
12
задан Javier Ferrero 15 January 2011 в 21:40
поделиться