如何依次遍历数组

时间:2019-08-17 11:08:57

标签: java arrays

我读取了一个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[]中的哪个元素。

1 个答案:

答案 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变量。这可以解决空值或更多值的问题。正如您还想要名称一样,根据您的实现,您可以从数组中获取第一个值,因为它始终是名称。这为您提供了急需的可定制性和自动化性。