我读取了一个file.txt并以String[] line;
的行开头
例如,我上课
public class Command {
String commandName;
String parameter;
String result;
}
我的line
可以在数组中包含1个元素,也可以包含2个元素,或者第一个元素和第三个元素。
那么,如何将我的line
与我的MyClass
关联起来?
我只能想象if
语句对于类似数组的每个元素
if(line.length==1){
command.setCommandName(line[0];
}
if(line.length==2){
command.setCommandName(line[0]);
command.setParameter(line[1]);
}
if(line.length==3){
command.setCommandName(line[0]);
command.setParameter(line[1]);
command.setResult(line[2]);
}
那之后我想做map
Map<String,Command> map = new HashMap<>();
map.put(command.getCommandName(),command);
以及之后的某些将来方法...
String result=map.get("some command").getResult();
因此,如果我已命名字段,我将不记得String[]
中的哪个元素。
答案 0 :(得分:0)
为什么不能只使用for循环?这是一个示例(注意,我更改了代码,现在您可以传递从.txt
文件读取的行长,并将其传递给myClass
对象):
Command command = new Command();
command.setLines(lines);
然后将您的Command
更改为:
class Command {
private String[] lines = new String[3];
public void setLines(String[] lines) {
if (lines != null) {
this.lines = lines;
}
}
public String getName() {
return lines[0];
}
public String getParameter() {
if (lines.length >= 2) {
return lines[1];
}
}
public String getResult() {
if (lines.length >= 3) {
return lines[2];
}
}
}
现在创建地图时:
Map<String, Command> map = new HashMap<>();
map.put(command.getName(), command);
然后,您也可以这样做:
String result = map.get("your_command").getResult();
现在,通过从.txt
文件中读取的行的长度来定义lines变量。这可以解决空值或更多值的问题。正如您还想要名称一样,根据您的实现,您可以从数组中获取第一个值,因为它始终是名称。这为您提供了急需的可定制性和自动化性。