System.out.println(map);
所以结果是{a=2,b=4,c=5..},但我想要打印
A 2
B 4
C 5
...
所以,我的处理器的提示是map tosting()重写,但我不明白
这是我的密码
class MapManager2 {
public static Map<String, Double> readData(String fileName) {
Map<String, Double> mapOfData;
Map<String, Double> sortedByValue = null;
try {
Scanner file = new Scanner(new File(fileName)); // read file
mapOfData = new TreeMap<>(); // create Map to store the values
while (file.hasNextLine()) {
String line = file.nextLine(); // read the line
String[] words = line.split("\\s+"); // split the item and price by space
Double price = Double.parseDouble(words[1]); // parse the double price
mapOfData.put(words[0], price); // put the data in map
}
/* Sort the map on basis of value*/
sortedByValue = mapOfData.entrySet()
.stream().sorted((Map.Entry.<String, Double>comparingByValue()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));
} catch (FileNotFoundException e) {
System.out.println("Input file not found");
}
return sortedByValue;
}
}
public class Problem21 {
public static void main(String[] args) {
Map<String, Double> map = MapManager2.readData("input.txt");
if (map == null) {
System.out.println("Input file not found.");
return;
}
System.out.println(map);
}
}
4条答案
按热度按时间xfb7svmp1#
要重写tostring()方法,请扩展treemap类并用新类替换treemap示例。
mctunoxg2#
所以,我的处理器的提示是map tosting()重写,但我不明白
我不知道你的“处理器”是谁(教授?),但那是个愚蠢的暗示。
当你在子类化某些东西时,重写这些东西是有意义的。别给Map分类,那是。。。不是你想要的。
而不是把“Map”传给
System.out.println
,这将导致println调用.toString()
在该对象上并打印生成的字符串,生成自己的字符串:5m1hhzi43#
你的教授告诉你重写map类的tostring方法。我认为最好的办法是匿名覆盖。
请注意,我现在没有任何方法检查此代码是否有错误,因此您可能需要修复一些名称。
5m1hhzi44#
我不知道你所说的“处理器的提示”是什么意思,但你真的不需要重写
toString
. 更简单的方法是将Map转换为所需的字符串:或者如果您只想直接打印Map: