如果java代码中有其他条件,则为MULTIPLE

时间:2014-08-06 21:31:10

标签: java

我的文本文件包含:

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

1 个答案:

答案 0 :(得分:2)

我建议你定义一个Map,其键是“METRO”,“TOYOTA”等......它的值是你希望为每个键执行的方法。这些方法可以用函数接口表示(即使你没有使用Java 8)。

现在,为了使用地图,你需要一种方法来提取给定行的键,所以最好是每行都以键开头,然后是一些分隔符(例如:{{1 }})。

示例:

TOYOTA,field2,field3,...