我的文本文件包含:
Apple IS A fruit
BANABA=fruit
HERO=fruit
TOYOTA 784YUT
USAIRWAYS canada
METROBUS=newyork
TOYOTA 784YUT
是该行中唯一的文字。
FileReader file = new FileReader("C:\\FILEREADER\\MockupData.txt");
BufferedReader br = new BufferedReader(file);
String line;
try {
while ((line = br.readLine()) != null) {
if (line.contains("METRO")) {
String Id = myPrivateMethodToHandleThisLine1(line);
//do something with this id.
} else if (line.contains("TOYOTA")) {
String Id2 = myPrivateMethodToHandleThisLine2(line);
//do something with this id.
} else if (line.contains("HERO")) {
String Id3 = myPrivateMethodToHandleThisLine3(line);
//do something with this id. } .
.
.(some more if/else conditions)
.
.
.
} catch (IOException e) {
e.printStackTrace();
}
.....remaing code.
我的问题很简单,我正在逐行从文件中读取文本。基于我得到的输入线,我将调用处理方法。
我想在性能方面实现最佳代码。我不想保留多个if / else条件。需要建议。
不使用JAVA 1.7
答案 0 :(得分:2)
我建议你定义一个Map,其键是“METRO”,“TOYOTA”等......它的值是你希望为每个键执行的方法。这些方法可以用函数接口表示(即使你没有使用Java 8)。
现在,为了使用地图,你需要一种方法来提取给定行的键,所以最好是每行都以键开头,然后是一些分隔符(例如:{{1 }})。
示例:
TOYOTA,field2,field3,...