当前位置: 首页 > 知识库问答 >
问题:

如何定义Java中档案的取值对象

公孙阳羽
2023-03-14

我写了一个程序,创建了3个.txt格式的文件,并将一些数据写入其中。现在我被要求为这些文件定义一个value对象,并重写toString方法,然后当我读取这些文件时,将它们设置为value对象。现在我完全糊涂了,不知道从何说起。事先谢谢你的帮助

共有1个答案

石思淼
2023-03-14

如果您想首先从文本文件创建对象,那么您要做的就是读取该文件。在Java API中有许多可用的类可用于读取文件:BufferedReaderFileReader等。您将创建的对象的数量将取决于文件中的行数。例如,如果您有一个具有以下内容的文件

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了解字段,因为我需要一种通用的方法来获得任何具有基本字段/简单字段的类的对象数组