package A;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import java.util.TreeMap;
class MapManager {
static Map<String, Double> readData(String str){
Map<String, Double> map = new TreeMap<String, Double>();
try {
BufferedReader br = new BufferedReader(new FileReader(str));
while(true) {
String line = br.readLine();
if(line == null) break;
String []sr = line.split(" ");
double num = Double.parseDouble(sr[1]);
map.put(sr[0], num);
}
br.close();
}catch(IOException e) {
e.printStackTrace();
}
return map;
}
}
public class A {
public static void main(String args[]) {
Map<String, Double> map = MapManager.readData("input.txt");
if(map == null) {
System.out.println("Input file not found.");
return;
}
System.out.println(map);
}
}
屏幕上的输出是:
... 但我想说:
...
我的教授说“你必须在类Map中重写tostring”,但map是接口,那么怎么能在map中重写tostring呢。。?我不能修改公共类a。如果有什么想法可以做出我想要的结果,请告诉我:))
3条答案
按热度按时间dgtucam11#
这里的其他答案省略了重写的实现
toString
方法。它们在这里:现在,您唯一需要决定的是是否要有一个具有这种重写的可重用类
toString
方法或仅一次使用。班道
一次性使用方式
wooyq4lh2#
map是引用,而在您的例子中object是
TreeMap
. 所以你需要重写toString()
在TreeMap<K, V>
班级。使用CustomTreeMap
而不是TreeMap
与当前代码相比。具体如下:从
AbstractMap
类,默认值toString()
执行情况如下。您可以操纵此代码以获得所需的输出。在这里,您还可以使用Java8,而不是直接使用迭代器。
zkure5ic3#
这是最简单的方法: