【问题标题】:What is the best way to store multiple cities with distances in Java?在Java中存储多个城市的最佳方法是什么?
【发布时间】:2021-02-09 08:11:40
【问题描述】:

我必须编写一个找到最短距离的程序。我很难弄清楚存储我拥有的数据的最佳方式是什么。我有以下城市的有向图:旧金山、休斯顿、查尔斯顿、新奥尔良、巴吞鲁日、丹佛、匹兹堡、孟菲斯、拉斯维加斯、西雅图。下面列出了城市的边缘和与城市的距离。所以从哥伦布到迈阿密是 61 英里。有关如何存储它的任何建议?

哥伦布 ---> 迈阿密:61,查尔斯顿:408,拉斯维加斯:689

迈阿密 ---> 旧金山:34,哥伦布:61

旧金山 ---> 迈阿密,休斯顿:485

休斯顿 ---> 旧金山,孟菲斯:63,丹佛:83

查尔斯顿 ---> 匹兹堡:36,孟菲斯:86,西雅图:933,哥伦布

【问题讨论】:

  • 定义一个Node 类,它有两个属性:一个城市(字符串)和一个Edges 列表。定义一个 Edge 类,它有 2 个属性:一个城市(字符串)和到它的距离(整数)

标签: java string multidimensional-array directed-graph weighted-graph


【解决方案1】:

您是否考虑过制作二维数组?将所有名称放在第一行和第一列中,例如String distance[8][8];,然后有点像乘法表,您可以手动输入距离值。之后,如果你想知道哥伦布和迈阿密之间的距离,你可以写:System.out.println(distance[Columbus][Miami]);

不过,这是一种非常基本的存储方式,因此如果您找到更全面的方式,例如制作 Cities 类,我建议您遵循它。作为一个小例子,你可以制作一个

Public Class Cities() {
public String CityName;
public int distance; }

然后手动制作几个城市对象,以及设置它们到不同城市的距离。然后,如果您想找到一个城市到另一个城市的距离,您可以使用自定义方法打印出各个城市的距离变量。

【讨论】:

  • 我在某处读到二维数组中的数据始终具有相同的数据类型。所以我认为这不是最合适的。
  • 很公平。但是,将整个数组存储为字符串数组(我错误地写成“int”数组)会很容易,然后将距离存储为字符串数字。然后,当您想以数字形式访问值时,只需 Integer parseInt(distance[...][...]);,您应该以 int 格式获得答案。如果您不想使用数组,请尝试构建一个城市类,就像我在上面展示的那样?
猜你喜欢
  • 2014-02-27
  • 1970-01-01
  • 2014-10-01
  • 2017-06-17
  • 1970-01-01
  • 1970-01-01
  • 2020-04-28
  • 2019-10-21
  • 2011-09-29
相关资源
最近更新 更多