读取文本文件并存储在hashmap中。然后按顺序排序

时间:2012-11-22 13:23:45

标签: java io hashmap comparator

文件是这样的:

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

我读了文本文件并存储在HashMap中 之后我想按顺序排序(按最高值排序),但问题是因为我在String中对值进行排序,我无法比较它。 那么..有没有办法将textfile的值以double或整数形式放入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);
    }
}

2 个答案:

答案 0 :(得分:3)

是的,使用HashMap<String,Double>,在输入值时,使用Double.parseDouble()将它们转换为double。

(您可以使用Float而非Double执行相同操作,但通常使用Double更有意义。

答案 1 :(得分:1)

HashMap不保证订单:

  

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

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

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