gpt4 book ai didi

java - java 代码中的多个 if else 条件

转载 作者:行者123 更新时间:2023-12-02 05:34:16 25 4
gpt4 key购买 nike

我的文本文件有这个:

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

最佳答案

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

现在,为了使用映射,您需要一种方法来提取给定行的键,因此最好每行都以键开头,后跟一些分隔符(示例:丰田,field2,field3,...)。

示例:

public interface ProcessLineInterface
{
public void processLine (String line);
}

Map<String, ProcessLineInterface> map = new HashMap<String, Runnable>();

map.put ("METRO", new ProcessLineInterface () {
public void processLine (String line)
{
myPrivateMethodToHandleThisLine1(line);
}
});
map.put ("TOYOTA", new ProcessLineInterface () {
public void processLine (String line)
{
myPrivateMethodToHandleThisLine2(line);
}
});
map.put (...);
...

while ((line = br.readLine()) != null)
{
ProcessLineInterface pline = map.get(extractKey(line));
if (pline != null) {
pline.processLine(line);
}
}

关于java - java 代码中的多个 if else 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com