首页 > 解决方案 > 如何按顺序遍历数组

问题描述

我读了一个 file.txt 并得到了行String[] line;

例如,我有课,

public class Command {

    String commandName;
    String parameter;
    String result;
}

line可以在数组中包含 1 个元素或 2 个元素,或者第一个和第三个元素。

那么,如何将 myline与 my相关联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[]什么意思。

标签: javaarrays

解决方案


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


推荐阅读