gpt4 book ai didi

java - 如何在 Java 中读取 "join"哈希表?

转载 作者:行者123 更新时间:2023-12-02 00:51:52 25 4
gpt4 key购买 nike

我有两个字符串:

A { 1,2,3,4,5,6 }B { 6,7,8,9,10,11 }

字符串中的数字是什么并不重要。那么用户将选择要加入的内容:

哈希连接 A.a1 = B.b5 B

我想我将A放入一个以A.a1为键的哈希表中,然后迭代B?键将是用户想要加入的内容,数据将是字符串中的内容。

最佳答案

您确定要尝试加入哈希表吗?也许您的数据结构错误?

查看 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());

连接哈希表本身没有意义;因为,一个“匹配”值可能存在于两个哈希表中,但被两个不同的键引用。同样,在两个不同的哈希表中找到的一个“匹配”键可能不会引用相同的值。

关于java - 如何在 Java 中读取 "join"哈希表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com