Хеш присоединиться в Java - PullRequest
3 голосов
/ 20 апреля 2010

У меня есть два отношения A и B, оба со всеми целочисленными атрибутами (A {a1, a2, a3, ...} B {b1, b2, b3, ..}. Как бы я присоединился к этим двум в Пользователь выберет два атрибута присоединения. Я создаю две хеш-таблицы и затем продолжаю присоединяться к ним?

Ответы [ 2 ]

3 голосов
/ 20 апреля 2010

Ну, а в какой форме ваши отношения? Они находятся в реляционной базе данных? Если это так, просто используйте SQL JOIN - СУБД, вероятно, выполнит хеш-соединение, но вам не нужно об этом беспокоиться.

Если их нет в реляционной базе данных, почему бы и нет?

Если какое-то странное ограничение не позволяет вам создавать форму, используя лучший инструмент для задания, тогда да, сделать хеш-соединение так же просто, как поместить каждый кортеж в хеш-таблицу с ключом в атрибуте соединения, а затем выполнить итерации по элементам одного и посмотреть спички в другом. Если все ваши данные помещаются в основную память, то есть.

0 голосов
/ 12 января 2016

Вот его способ сделать хеш-соединение в Java Лучше всего хэшировать одну таблицу с хэш-картой.

HashMap<Sting, Object[]> hash = new HashMap<String, Object[]>();
for (Object[] a : as) {
    hash.put(a.a1, a);
}

Затем зациклите в B, используя хеш, и перегруппируйте совпадающие.

ArrayList joined = new ArrayList();
for(Objec[] b : bs){
    A a = hash.get(b.b1);
    joined.add(new Object[]{a, b});
}

Это будет работать, только если каждый элемент таблицы имеет уникальный a1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...