gpt4 book ai didi

java - 遍历具有重复值的 Map 并识别共享这些值的键

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

我有一个 Map类型 <String, Set<Object>>包含名称和坐标 ( Double = X,Y )。这些值用于创建图表。我遇到的问题是有些点共享相同的坐标,因此,当它们出现在另一个之上时,它们几乎不可见。为了处理这个问题,我想迭代到 Set并增加 0.01只有 X点数。

虽然这可以显着解决问题,但它并不是一个完美的解决方案,因为某些点仍然会与其他点发生冲突。

有没有办法在 Map 中搜索一次针对特定范围的值,例如0.1-0.2, 0.2-0.3, etc.并确定什么 keys出现在这些范围内?然后我假设我可以增加共享相同 X 的那些在特定范围内。这将阻止添加 0.01所有 X key的小号并且只提供给需要的人。

我的代码:

double i=0.01;

for (Map.Entry<String, Set<Coordinates>> serie : nameToCoordinates.entrySet()) {
List<Double> xData = new ArrayList<>();
List<Double> yData = new ArrayList<>();

for (Coordinates coord : serie.getValue()) {

xData.add(coord.getX()+i);
yData.add(coord.getY());

}

i=i+0.01;

chart.addSeries(serie.getKey(), xData, yData);

}

输入示例:

Point1   [[0.1,0.1,0.1,0.1,0.1,0.1],[0.2,0.3,0.4,0.5,0.6,0.7]] 
Point2 [[0.1,0.1,0.1,0.1] ,[0.4,0.5,0.6,0.7]]
Point3 [[0.1,0.1] ,[0.6,0.7]]

最佳答案

您可以创建一个看起来像这样的函数。它会返回所有在您的最小范围和最大范围之间具有 x 或 y 坐标的键。您只需要对它返回的键列表做一些事情。就像增加属于该键的值一样。当然,稍微更改函数以适应您正在使用的对象类型:p。祝你好运!

private List<String> getKeyRange(Map<String, List<Object> map, double min, double max){
List<String> keys = new List<>();
for(String key : map.getKeys()){
Object coord = map.get(key);
if( (coords.getX() > min && coords.getX() < max) || (coord.getX() > min && coord.getY() < max) ){
keys.add(key);
}
}
return keys;
}

关于java - 遍历具有重复值的 Map 并识别共享这些值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54887172/

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