【问题标题】:read text file and store in hashmap. Then sort in order读取文本文件并存储在 hashmap 中。然后按顺序排列
【发布时间】:2012-11-22 13:23:45
【问题描述】:

文件是这样的:

name1   134.2
name2   456.7
name3   265.3
...
...

我读取文本文件并存储在 HashMap 之后我想按顺序排序(按最大值),但问题是因为我对字符串中的值进行排序,所以我无法比较它。 那么..有没有办法将 textfile 的值以 double 或 integer 形式放入 hashmap 中?

import java.io.*;
import java.util.*;


class Test 
{
    public static void main(String[] args) throws FileNotFoundException {

Scanner scanner = new Scanner(new FileReader("score.txt"));

        HashMap<String, String> map = new HashMap<String, String>();

        while (scanner.hasNextLine()) {
            String[] columns = scanner.nextLine().split("\t\t");
            map.put(columns[0], columns[1]);
        }

        System.out.println(map);
    }
}

【问题讨论】:

    标签: java io hashmap comparator


    【解决方案1】:

    是的,使用HashMap&lt;String,Double&gt; 并在输入值时,使用Double.parseDouble() 将它们转换为双精度值。

    (您可以使用 Float 而不是 Double,但通常使用 Double 更有意义)。

    【讨论】:

      【解决方案2】:

      HashMap不保证顺序:

      这个类不保证地图的顺序;在 特别是,它不保证订单将保持不变 随着时间的推移。

      这意味着对哈希映射进行排序将毫无用处。如果您需要加载类似的键值对,您可以考虑实现自己的类,该类具有必填字段并实现Comparible 接口。

      这将允许您加载对象,然后只需调用 Collections.sort() 即可对自定义对象列表进行排序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-01-19
        • 2014-08-15
        • 1970-01-01
        • 2016-01-23
        • 2020-06-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多