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

时间:2015-01-10 23:16:52

标签: java arrays sorting arraylist multidimensional-array

我需要以格式存储以下数据,以便可以按从最低值到最高值的Double值进行排序。我根本不懂java。

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

我知道我不能使用数组。所以有像ArrayLists,Comparators,Maps,HashMaps这样的东西,我找不到任何类似的例子。

这篇文章(Sort a two dimensional array based on one column)似乎很接近,但我不明白它是如何运作的。

备注:

  1. 我不会提前知道这些元素,所以我想要维度 运行时的数组。我希望设计可以实现一些东西 喜欢"新的2D-ArrayThingy [ExternalArray.size]"
  2. 我将在基于对象的循环中逐行获取所有元素。 它们总是字符串后跟double。所以理解如何 填充行,一次一个是有用的。我不在乎 订单首先是否为字符串。
  3. 子的问题:

    1. 如何根据我的需要存储这些数据?
    2. 如何按双打值对数据进行排序?
    3. 如何输出数据(例如屏幕)?
    4. TIA!

2 个答案:

答案 0 :(得分:1)

您可以将它们存储在TreeMap中,该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)); } 将根据其自然顺序返回键。在这种情况下,您将使用Double作为键,将String作为值。

{{1}}

哪个输出:

  

-1.0 = String0

     

1.0 = String1

     

1.2 = String2

答案 1 :(得分:0)

您可以将它们放在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);

快乐的编码!