java - 如何将多值哈希图中的坐标值输入到 javafx point2d?
问题描述
目前,我正在尝试使用 JavaFX 创建热图,并将国家名称及其坐标存储到HashMap
. 我的想法是调用HashMap
并将国家的坐标值放入Point2D
. 这样我就可以循环线路events = new Point2D[]
,而不是单独编写新点。我不确定我的编码想法是否正确。但是,出现了错误(如下面的代码所示)。
构造函数 Point2D(List) 未定义
如何获取坐标值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(从您发布的代码看来是正确的),将地图的单个元素转换为 a 所需要做的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()]);
推荐阅读
- javascript - Angular 6 无法在视图上呈现数据
- javascript - GET http://localhost:8080/dist/bundle.js net::ERR_ABORTED 404(未找到)
- excel - 我的 Excel 加载项添加后一直消失
- spring-boot - Springboot 错误消息插值不适用于自定义验证器
- java - 使用 switch 语句并计算和显示所选书籍类型的总价格的程序
- sql-server - Sql Server 复制 - 添加文章而不使用向导
- python - BeautifulSoup Instagram 帖子 html 抓取
- java - 设置大小时的java arraylist无休止循环
- javascript - 如何获取选项的属性
- c++ - 我在从文本文件中逐行读取时遇到问题?