Вы уверены, что пытаетесь присоединиться к хеш-таблицам? Возможно, у вас неправильная структура данных?
Посмотрите на java.util.Set (и java.util.HashSet). Если вы хотите, чтобы элементы были в обеих таблицах, тогда это простая операция Set, например:
Collection A = new ...
...fill the A up...
Collection B = new ...
...fill the B up...
Set join = new HashSet();
join.addAll(A);
join.retainAll(B);
Если вы имеете в виду нечто более похожее на соединение таблиц SQL, то вывод будет зависеть от того, какой тип соединения вы хотите выполнить, и что означает знак равенства в этом случае. Обратите внимание, что вам придется написать класс Pair (который вы должны сделать более информативным, чем Pair для вашего конкретного случая)
Для полного объединения:
ArrayList pairs = new ArrayList();
for (Number numberA : A) {
for (Number numberB : B) {
pairs.add(new Pair(numberA, numberB));
}
}
Для полного объединения с предложением where:
ArrayList pairs = new ArrayList();
for (Number numberA : A) {
for (Number numberB : B) {
if (check the condition of the where clause here) {
pairs.add(new Pair(numberA, numberB));
}
}
}
Это примерно такой же хороший ответ, который можно дать в данных обстоятельствах, поскольку ваш вопрос не очень конкретен. Если эти общие ответы не помогут вам, вам потребуется более подробно объяснить свой вопрос, чтобы получить более подробный ответ.
--- Сначала отредактируйте, после некоторого уточнения ---
Хорошо, значит, это равнозначное SQL-уравнению.
Хеш-таблицы - это Карты, что означает, что они содержат элемент в одном «домене», который можно использовать для поиска элемента в другом «домене». В хэш-таблице первый домен - это набор ключей, а второй домен - это набор значений. Думайте об этом как о куче ярлыков и куче предметов. Если должно быть выполнено равное объединение, оно должно объединять подобные элементы. Это означает, что он либо присоединит один ключ к другому ключу, либо присоединит одно значение к другому.
Для ключей:
Hashtable A = ...
Hashtable B = ...
Set keyJoin = new HashSet();
keyJoin.addAll(A.keySet());
keyJoin.retainAll(B.keySet());
Для значений:
Hashtable A = ...
Hashtable B = ...
Set valueJoin = new HashSet();
valueJoin.addAll(A.values());
valueJoin.retainAll(B.values());
Нет смысла присоединяться к самим хеш-таблицам; потому что одно «совпадающее» значение может находиться в обеих хеш-таблицах, но на него могут ссылаться два разных ключа. Аналогично, один «совпадающий» ключ, найденный в двух разных хеш-таблицах, может не ссылаться на одно и то же значение.