首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于主数据的实例创建

基于主数据的实例创建
EN

Stack Overflow用户
提问于 2015-05-22 17:54:46
回答 2查看 22关注 0票数 1

dat文件包含以下格式的信息,该格式是使用writeUTF编写的:Fruit, Colour, Taste, Yes/No,最后一个是“是”或“不是”,但是它是一个字符串。

现在,类的定义如下

代码语言:javascript
复制
public class Food {
    private String name;
    private String colour;
    private String taste;
    private boolean availability;


    public Food(String name, String colour, String taste, boolean availability) {
        this.name = name;
        this.colour = colour;
        this.taste = taste;
        this.availability = availability;
    }


}

当我读取dat文件时:

代码语言:javascript
复制
FileInputStream fis = new FileInputStream("food.dat");
DataInputStream dis = new DataInputStream(fis);

我是否可以将一行文本立即转换为Food的实例?棘手的一点是String -> boolean

最初,我想将文件的每一行添加到ArrayList中,然后将每一行从,中分割出来,并将其添加到一个庞大的字符串中,并使用if逻辑来处理Yes/No部件,但是如果有数千行这样的信息呢?这种做法不太有吸引力。

遗憾的是,如果这不是使用ObjectOutputStream编写的(某种类型的任务,我没有创建规则)。是否有方法从文件中读取一行并根据信息创建实例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-22 17:58:51

为什么要把所有的东西都添加到列表中呢?通过readUTF读取每一行,在逗号上拆分,然后有一个方法从这4个组件生成一个Food对象。然后将你的食物对象添加到任何你想要的容器中。

代码语言:javascript
复制
public Food (String[] data){
  if (data==null || data.length!=4){
     // error handling
  }
  this.name=data[0];
  ...
  this.availability="Yes".equals(data[3])
}
票数 2
EN

Stack Overflow用户

发布于 2015-05-22 18:00:23

是的,你能做到的。要做到这一点,您需要知道数据的格式,并相应地编写解析器。

1)如果输入行(或)数据用, | :分隔,则拆分数据并为每一行创建Food对象。使用setters方法设置对象中的数据。

代码语言:javascript
复制
String[] splitData = input.split("delimiter");
//length and error check of SplitData
Food food = new Food();
food.setName(splitData[0])); 
...

(或)

通过Constructor将输入行传递给Food对象,并让构造函数执行拆分和数据分配。

代码语言:javascript
复制
   Food(String input){
          String[] splitData = input.split("delimiter");
          //length and error check of SplitData
          name = splitData[0];
          ...
     }

创建Food对象后,可以根据需要将其添加到任何集合中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30403020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档