gpt4 book ai didi

java - 检查对的数据结构?

转载 作者:行者123 更新时间:2023-12-04 05:30:00 25 4
gpt4 key购买 nike

假设我有对象 A、B、C、D。它们可以包含对彼此的引用,例如,A 可能引用 B 和 C,而 C 可能引用 A。我想创建段但不想创建它们两次,所以我不想要段 AC 和段 CA,只是其中 1 个。所以我想保留一个已创建段的列表,例如:A C,并检查我是否已经有 A C 或 C A,如果是,则跳过它。

有没有可以做到这一点的数据结构?

谢谢

if(list.contains(a,b)
{
//dont add
}

最佳答案

你可以介绍类似的东西

class PairKey<T extends Comparable<T>> { 
final T fst, snd;
public PairKey(T a, T b) {
if (a.compareTo(b) <=0 ) {
fst = a;
snd = b;
} else {
fst = b;
snd = a;
}
}

@Override
public int hashCode() {
return a.hashCode() & 37 & b.hashCode();
}

@Override
public boolean equals(Object other) {
if (other == this) return true;
if (!(other instanceOf PairKey)) return false;
PairKey<T> obj = (PairKey<T>) other;
return (obj.fst.equals(fst) && obj.snd.equals(snd));
}
}

那么你可以将边放入 HashSet < PairKey < 中? extends Comparable>> 然后检查给定的对是否已经存在。

您需要使您的顶点具有可比性,因此可以将 PairKey(A,B) 视为等于 PairKey(B,A)

然后 HashSet 将为您完成剩下的工作,例如您将能够查询
pairs.contains(new PairKey(A,B)); 

如果对包含 PairKey(A,B) 或 PairKey(B,A) - 它将返回 true。

hashCode 实现可能略有不同,可能 IDE 会生成更复杂的东西。

希望有帮助。

关于java - 检查对的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12771016/

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