如何在 Java 中存储、排序和打印 2D "array" 字符串和双精度数?

How do I store, sort and print a 2D "array" of strings and doubles in Java?

我需要以一种格式存储以下数据,以便它可以按 Double 值从最低值到最高值排序。我一点也不了解java。

Index,         Value
"string1",     1.1134
"string2",     2.3469
"string4",     5.2365
"string3",     2.5597
...

我知道我不能为此使用数组。所以有 ArrayLists、Comparators、Maps、HashMaps 之类的东西,我找不到任何类似的例子来跟随它们。

这个 post (Sort a two dimensional array based on one column) 看起来很接近,但我不明白它是如何工作的。

备注:

  1. 不会提前知道元素,所以想维度 运行时的数组。我希望设计能实现一些东西 喜欢 "new 2D-ArrayThingy[ExternalArray.size]"
  2. 我将在基于对象的循环中逐行获取所有元素。 它们将始终是字符串后跟双精度。所以了解如何 要填充行,一次一个很有用。我不在乎 顺序是不是字符串在前。

子题:

  1. 如何根据需要存储这些数据?
  2. 如何按双精度值对数据进行排序?
  3. 如何输出数据(例如屏幕)?

TIA!

您可以将它们存储在 TreeMap 中,该 return 键将根据它们的自然顺序排列。在这种情况下,您会将 Double 作为键,将 String 作为值。

final Map<Double,String> map = new TreeMap<>();
map.put(1.2, "String2");
map.put(1.0, "String1");
map.put(-1.0, "String0");
for(Double d : map.keySet()) {
    System.out.println(d + " = " + map.get(d));
}

输出:

-1.0 = String0

1.0 = String1

1.2 = String2

您可以将它们放在 TreeMap 中,如下所示:

Map<Double, String> map = new TreeMap<Double, String>();

然后,您可以通过Map.put()方法将对象放入。地图的大小不固定,因此您可以随时对其进行编辑。假设您有两个数组,一个是双精度数组,一个是字符串数组,它们将配对在一起,您可以:

for (int i = 0; i < doubles.length; ++i)
{
    map.put(doubles[i], string[i]);
}

然后,要按顺序打印,您所要做的就是:

System.out.println(map);

编码愉快!