基于原始数据创建实例
Instance creation based on primary data
一个dat
文件包含以下格式的信息,使用writeUTF
编写:
Fruit, Colour, Taste, Yes/No
,最后一个是 Yes 或 No,但是,它是一个字符串。
现在,一个class定义如下
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
文件时:
FileInputStream fis = new FileInputStream("food.dat");
DataInputStream dis = new DataInputStream(fis);
我能否以某种方式立即将一行文本转换为 Food
的实例?棘手的一点是 String -> boolean
.
一开始我想把文件的每一行加到一个ArrayList
中,然后把每一行从,
中拆分出来加成一个String massive,然后用if
逻辑来处理Yes/No
部分,但如果此信息有数千行怎么办?这种做法并没有太大的吸引力。
如果这不是使用 ObjectOutputStream
编写的,遗憾的是(某种分配,我没有创建规则)。有没有办法从文件中读取一行并根据信息创建一个实例?
为什么要将所有内容都添加到列表中?通过 readUTF 读取每一行,以逗号分隔,然后有一个方法从 4 个组件生成一个 Food 对象。然后将您的 Food 对象添加到您想要的任何容器中。
public Food (String[] data){
if (data==null || data.length!=4){
// error handling
}
this.name=data[0];
...
this.availability="Yes".equals(data[3])
}
是的,你可以做到。为此,您需要知道数据的格式并相应地编写解析器。
1) 如果输入行(或)数据用 , | :
分隔,则拆分数据并为每一行创建 Food
对象。使用 setter 方法在对象中设置数据。
String[] splitData = input.split("delimiter");
//length and error check of SplitData
Food food = new Food();
food.setName(splitData[0]));
...
(或)
将输入行通过Constructor传递给Food对象,让构造函数进行拆分和数据赋值。
Food(String input){
String[] splitData = input.split("delimiter");
//length and error check of SplitData
name = splitData[0];
...
}
创建 Food
对象后,您可以根据需要将其添加到任何集合中。
一个dat
文件包含以下格式的信息,使用writeUTF
编写:
Fruit, Colour, Taste, Yes/No
,最后一个是 Yes 或 No,但是,它是一个字符串。
现在,一个class定义如下
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
文件时:
FileInputStream fis = new FileInputStream("food.dat");
DataInputStream dis = new DataInputStream(fis);
我能否以某种方式立即将一行文本转换为 Food
的实例?棘手的一点是 String -> boolean
.
一开始我想把文件的每一行加到一个ArrayList
中,然后把每一行从,
中拆分出来加成一个String massive,然后用if
逻辑来处理Yes/No
部分,但如果此信息有数千行怎么办?这种做法并没有太大的吸引力。
如果这不是使用 ObjectOutputStream
编写的,遗憾的是(某种分配,我没有创建规则)。有没有办法从文件中读取一行并根据信息创建一个实例?
为什么要将所有内容都添加到列表中?通过 readUTF 读取每一行,以逗号分隔,然后有一个方法从 4 个组件生成一个 Food 对象。然后将您的 Food 对象添加到您想要的任何容器中。
public Food (String[] data){
if (data==null || data.length!=4){
// error handling
}
this.name=data[0];
...
this.availability="Yes".equals(data[3])
}
是的,你可以做到。为此,您需要知道数据的格式并相应地编写解析器。
1) 如果输入行(或)数据用 , | :
分隔,则拆分数据并为每一行创建 Food
对象。使用 setter 方法在对象中设置数据。
String[] splitData = input.split("delimiter");
//length and error check of SplitData
Food food = new Food();
food.setName(splitData[0]));
...
(或)
将输入行通过Constructor传递给Food对象,让构造函数进行拆分和数据赋值。
Food(String input){
String[] splitData = input.split("delimiter");
//length and error check of SplitData
name = splitData[0];
...
}
创建 Food
对象后,您可以根据需要将其添加到任何集合中。