【问题标题】:Using index of multidimensional array to get value of another array使用多维数组的索引来获取另一个数组的值
【发布时间】:2013-08-14 00:23:54
【问题描述】:

好的,基本上我的程序中有 2 个多维数组:

产生的距离: 空

999.0   22.0    38.0    9.0     12.0

10.0    999.0   9.0     22.0    24.0

10.0    41.0    999.0   25.0    49.0

4.0     2.0     18.0    999.0   1.0

4.0     38.0    8.0     20.0    999.0

道路矩阵:

null     town     town       national   regional
town     null     national   motorway   motorway
town     motorway null       regional   town
motorway national national   null       town
town     town     national   regional   null

第一个数组生成距离,第二个数组生成这些距离的道路类型。

我正在使用一种算法来计算最佳路线,我正在处理第一个矩阵。我使用了一个数组列表。

[0, 4, 3, 1, 2, 0]

基本上我想在我的第二个数组中获取道路的索引。

结果应该如下[regional,regional,national,national,town]

我只是想知道使用第一个矩阵生成的结果最有效的方法是什么?

谢谢

【问题讨论】:

  • 为什么你没有一个复杂类型的二维数组......节点(距离,道路)并让你的算法读取节点的距离而不是直接作为数组中的值。同样,填充这两个数组的任何内容都只会在一次传递中构造一个new Node?由于某种原因,这对您不起作用吗?
  • 请解释一下列表的含义,以及结果列表是如何获得的。这些例子要么不一致,要么很难弄清楚。
  • @Doug 谢谢,这是我最初想做的,但发现很难实现。我正在考虑创建一个新对象 > 对象结果 = 新对象 [distance.length,road.length][]。感谢您的建议,并为我缺乏理解感到抱歉,我只是在这两个矩阵上苦苦挣扎,似乎无法掌握它们
  • @MarioRossi 谢谢你的回复。我正在使用分支定界算法来获得结果,这是在第一个矩阵上,我没有在第二个矩阵上实现任何东西,基本上是想从第一个获得的索引中获取第二个矩阵中值的索引。对不起,我对这一切的理解很差
  • @user2302621 你只需要创建一个新类。就像下面的答案一样。

标签: java matrix multidimensional-array arraylist indexing


【解决方案1】:

由于您使用第一个数组中的数据来填充第二个数组,因此最好将它们保持在彼此附近,以防止尽可能多的缓存未命中。

例如:

public class Road {
  public float distance;
  public RoadType roadType;
};

// if you know the size, try using an actual array of Road
List<Road> roads;

除非您希望提高数据访问效率,否则您可能需要更改数据的内存布局。 (在上述情况下,它应该在创建时高效)

【讨论】:

    猜你喜欢
    • 2013-09-30
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2021-11-24
    • 2022-01-26
    • 2016-04-05
    相关资源
    最近更新 更多