gpt4 book ai didi

java - 如何将多值 HashMap 中的坐标值输入到javafx point2d中?

转载 作者:行者123 更新时间:2023-12-01 18:20:35 26 4
gpt4 key购买 nike

目前,我正在尝试使用 JavaFX 创建热图,并将国家/地区名称及其坐标存储到 HashMap 中。我的想法是调用 HashMap 并将国家/地区的坐标值获取到 Point2D 中。这样我就可以循环 events = new Point2D[] 行,而不是单独写入新点。我不确定我的编码想法是否正确。但是,出现了错误(如下面的代码所示)。

The constructor Point2D(List) is undefined

如何获取HashMap中的坐标值并将其输入到Point2D中,而不是将值本身插入到Point2D中(如图所示)在下面的代码中)?

@Override public void init() {
//Setting country coordinates on the map
HashMap<String, List<Integer>> countryCoordinates = new HashMap<>();
Integer[] coordinates = {};
countryCoordinates.put("china", Arrays.asList(700, 180));
countryCoordinates.put("Diamond Princess", Arrays.asList(810, 170));
countryCoordinates.put("Singapore", Arrays.asList(726, 310));
countryCoordinates.put("Japan", Arrays.asList(810, 170));
countryCoordinates.put("Hong Kong", Arrays.asList(755, 225));
countryCoordinates.put("Thailand", Arrays.asList(720, 250));
.
.
.
.
pane = new StackPane();
heatMap = new SimpleHeatMap(1000, 600, ColorMapping.LIME_YELLOW_RED, 40);
heatMap.setOpacityDistribution(OpacityDistribution.EXPONENTIAL);
heatMap.setHeatMapOpacity(1);
events = new Point2D[] {
new Point2D(countryCoordinates.get("china")), //The constructor Point2D(List<Integer>) is undefined
new Point2D(810, 170),

最佳答案

假设每个列表的大小为 2(从您发布的代码来看这似乎是正确的),将 map 的单个元素转换为 Point2D 所需要做的就是提取两个列表中的元素并将它们传递给 Point2D 构造函数:

List<Integer> chinaCoords = countryCoordinates.get("china");
Point2D chinaPoint = new Point2D(chinaCoords.get(0), chinaCoords.get(1));

由于您要重复执行此操作,因此定义一个实用程序方法来执行此操作可能更方便,而不是重复编写此代码:

private Point2D asPoint2D(List<Integer> coordList) {
return new Point2D(coordList.get(0), coordList.get(1));
}

然后 init() 方法中的代码看起来就像这样

events = new Point2D[] {
asPoint2D(countryCoordinates.get("china")),
...
};
<小时/>

更高级(但更干净)的选项:

如果您熟悉 Streams API 和 lambda 表达式,您甚至可以在不定义显式函数(或显式循环等)的情况下执行此操作:

events = countryCoordinates().values().stream()
.map(list -> new Point2D(list.get(0), list.get(1)))
.collect(Collectors.toList())
.toArray(new Point2D[countryCoordinates.size()]);

关于java - 如何将多值 HashMap 中的坐标值输入到javafx point2d中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60299153/

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