gpt4 book ai didi

java - 需要一双新的眼睛来弄清楚比较 map 中的值背后的逻辑

转载 作者:行者123 更新时间:2023-12-02 05:56:46 24 4
gpt4 key购买 nike

问题

数据的格式为:

Map<String, Map<String, Integer>>

看起来像这样:

{"MilkyWay": {"FirstStar" : 3, "SecondStar" : 9 .... }, "Andromeda": {"FirstStar" : 10, "SecondStar" : 9 .... } }

我想在快速循环中比较 Star 值,因此我想比较 MilkyWayFirstStar 的整数值和 Andromeda,如果值相同或不同,则返回 truefalse。因为这张 map 很大。

我的尝试

我想做这样的事情:

//GalaxyMap<String, <Map<String, Integer>>

for (Map<String, Integer> _starMap : GalaxyMap.values())
{
for (String _starKey : _starMap.keySet()){
//Can't quite think of the correct logic... and I'm tired...
}

}

我想让它尽可能短......我已经盯着这个有一段时间了,我正在绕着它转圈。

编辑

外键不同,内键相同

此外,由于这是来自服务器的响应,我不知道它的大小

最佳答案

为什么这需要一张 map 。如果您总是使用“FirstStar”、“SecondStar”等作为 key ,那么为什么不将其作为一个列表呢..

Map<String, List<Integer>>

然后你可以这样做:

public boolean compareGalaxyStar(String galaxyName, String otherGalaxyName, int star) {
List<Integer> galaxyStars = galaxyMap.get(galaxyName);
List<Integer> otherGalaxyStars = galaxyMap.get(otherGalaxyName);

return galaxyStars.get(star) == otherGalaxyStars.get(star);
}

注意:您需要进行一些验证以确保输入正确。

要为所有明星实现这一点,没有太大不同。

if(galaxyStars.size() == otherGalaxyStars.size()) {
for(int x = 0; x < galaxyStars.size(); x++) {
// Perform your comparisons.
if(galaxyStars.get(x) != otherGalaxyStars.get(x)) {
// Uh oh, unequal.
return false;
}
}
}

关于java - 需要一双新的眼睛来弄清楚比较 map 中的值背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23010661/

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