我写了一个程序,创建了3个.txt格式的文件,并将一些数据写入其中。现在我被要求为这些文件定义一个value对象,并重写toString方法,然后当我读取这些文件时,将它们设置为value对象。现在我完全糊涂了,不知道从何说起。事先谢谢你的帮助
如果您想首先从文本文件创建对象,那么您要做的就是读取该文件。在Java API中有许多可用的类可用于读取文件:BufferedReader
、FileReader
等。您将创建的对象的数量将取决于文件中的行数。例如,如果您有一个具有以下内容的文件
PersonName1,PersonSurname1,20
PersonName2,PersonSurname2,22
PersonName3,PersonSurname3,23
假设这些行代表一些用户姓名、姓氏和年龄
您首先需要做的是创建一个将表示该对象的类,正如我们在文本文件中看到的,该对象将包含三个参数,因此您创建一个包含三个atribbute的类
public class Person {
private String name;
private String surname;
private Integer age;
public Person(String name, String surname, Integer age) {
this.name = name;
this.surname = surname;
this.age = age;
}
@Override
public String toString() {
return "NAME : " + name + " : " + surname;
}
现在是读取部分,对于读取文件,我们将使用bufferedreader
,我们通过在每次迭代中用逗号(,)拆分文件的每一行来读取文件的每一行
String [] parameters = line.split(",");
这个String数组现在将表示我们的用户属性,因此我们可以访问它
String name = parameters[0];
String surname = parameters[1];
Integer age = Integer.parseInt(parameters[2]);
现在,我们在每次迭代时都创建一个Person对象,并将其添加到列表中
Person p = new Person(name,surname,age);
list.add(p);
示例
BufferedReader bufferedReader = new BufferedReader(new FileReader("test.txt"));
List<Person> list = new ArrayList<>();
String line = null;
while((line = bufferedReader.readLine())!=null){
try {
String[] parameters = line.split(",");
if(parameters.length == 3) {
String name = parameters[0];
String surname = parameters[1];
Integer age = Integer.parseInt(parameters[2]);
Person p = new Person(name, surname, age);
list.add(p);
}
}catch (NumberFormatException e){
}
}
System.out.println("Object created from the file");
list.stream().forEach(System.out::println);
输出
NAME : PersonName1 : PersonSurname1
NAME : PersonName2 : PersonSurname2
NAME : PersonName3 : PersonSurname3
出于教育目的,我正在研究Java值对象。 我不明白的是,为什么没有人(异口同声)提到Java值对象实现可比性? 如果Java值对象必须具有"正确的"HashCode 这是我的思考过程。将测试值对象的实例是否相等,因此它们需要正确的equals/hashcode。值对象可以存储在“hash”集合中,这也是Hashcode方法所需要的。那么,为什么不添加Compariable以便它们可以成为有序集合中
我试图创建一个从Firestore数据创建的对象的ArrayList。据我所知,这些对象正在正确地创建。当我试图访问我要添加它们的ArrayList时,尽管它是空的。我获取集合的引用,然后为查询添加侦听器。
问题内容: 我有一堂课 我想序列化并保存为用户默认值。 首先,我不确定如何正确编写编码器和解码器。因此,对于初始化,我编写了两种方法。 当我尝试执行此代码时: 应用程序崩溃,我收到此消息: 我做错了什么? 问题答案: 仅适用于Objective- C类,不适用于纯Swift类。您可以通过使用属性标记类或从诸如的Objective-C类继承来将类桥接到Objective-C 。 有关更多信息,请参见
问题内容: 我需要读里面。我尝试通过如下相对路径进行操作: 这给了我以下错误: 如何在Java中定义相对路径?我正在使用jdk 1.6并在Windows上工作。 问题答案: 试试这个 因此,新文件指向创建路径,通常是项目主文件夹。 [编辑] 正如@cmc所说, 两者都赋予相同的值。
如果它走路像鸭子,说话像鸭子,样子像鸭子,叫声也像鸭子,那它就是一只鸭子。 对于 Nutz Ioc 来说,它面对的配置文件就是层层嵌套的 "名值对集合",或者说是 Map 集合。 事实上,它是先把整个配置文件解析成 Map 再做判断的。 如果一个 Map 仅包括如下的键,则被认为是一个注入对象: type 对象类型 singleton 是否单例 scope 生命周期范围 events 监听事件 a
下面是演示类 我有一个演示实例: 对于新的,我需要从Demo了解字段,因为我需要一种通用的方法来获得任何具有基本字段/简单字段的类的对象数组