繁体   English   中英

如何在Java中存储,排序和打印2D字符串和双精度“数组”?

[英]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之类的东西,我找不到任何类似的示例可以跟随它们。

这篇文章( 基于一列对二维数组进行排序 )似乎很接近,但是我不知道它是如何工作的。

笔记:

  1. 我不会提前知道元素,所以我想在运行时确定数组的尺寸。 我希望设计可以实现“ new 2D-ArrayThingy [ExternalArray.size]”之类的东西。
  2. 我将在基于对象的循环中逐行获取所有元素。 它们将始终是字符串,后跟双精度。 因此,了解如何一次填充一行非常有用。 我不在乎命令是否首先是字符串。

次要问题:

  1. 如何根据我的需要存储这些数据?
  2. 如何按double值对数据排序?
  3. 如何输出数据(例如到屏幕)?

TIA!

您可以将它们存储在TreeMapTreeMap将根据其自然顺序返回键。 在这种情况下,您将把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 =字符串0

1.0 =字符串1

1.2 =字符串2

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

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

然后,可以通过Map.put()方法放入对象。 地图的大小不是固定的,因此您可以随时对其进行编辑。 假设您有两个数组,一个是Doubles,另一个是Strings,可以配对在一起,则可以:

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

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

System.out.println(map);

编码愉快!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM