如何在 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) 看起来很接近,但我不明白它是如何工作的。
备注:
- 不会提前知道元素,所以想维度
运行时的数组。我希望设计能实现一些东西
喜欢 "new 2D-ArrayThingy[ExternalArray.size]"
- 我将在基于对象的循环中逐行获取所有元素。
它们将始终是字符串后跟双精度。所以了解如何
要填充行,一次一个很有用。我不在乎
顺序是不是字符串在前。
子题:
- 如何根据需要存储这些数据?
- 如何按双精度值对数据进行排序?
- 如何输出数据(例如屏幕)?
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);
编码愉快!
我需要以一种格式存储以下数据,以便它可以按 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) 看起来很接近,但我不明白它是如何工作的。
备注:
- 不会提前知道元素,所以想维度 运行时的数组。我希望设计能实现一些东西 喜欢 "new 2D-ArrayThingy[ExternalArray.size]"
- 我将在基于对象的循环中逐行获取所有元素。 它们将始终是字符串后跟双精度。所以了解如何 要填充行,一次一个很有用。我不在乎 顺序是不是字符串在前。
子题:
- 如何根据需要存储这些数据?
- 如何按双精度值对数据进行排序?
- 如何输出数据(例如屏幕)?
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);
编码愉快!