文件是这样的:
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);
}
}
答案 0 :(得分:3)
是的,使用HashMap<String,Double>
,在输入值时,使用Double.parseDouble()
将它们转换为double。
(您可以使用Float
而非Double
执行相同操作,但通常使用Double更有意义。
答案 1 :(得分:1)
HashMap
不保证订单:
此课程不保证地图的顺序;在 特别是,它不保证订单将保持不变 随着时间的推移。
这意味着对哈希映射进行排序将毫无用处。如果您需要加载这些键值对,您可以考虑实现自己的类,该类具有必需的字段并实现Comparible
接口。
这将允许您加载对象,然后只需调用Collections.sort()
来对自定义对象列表进行排序。