Java 如何按名称显示输出

Java 如何按名称显示输出,java,Java,我必须从一个二进制文件中读取,然后我应该按名称顺序显示输出 问题是: 编写一个从二进制文件person.dat读取数据的程序。(请从网站下载二进制文件。)然后,按姓名升序显示姓名、年龄和性别(M–男性,F–女性) 二进制文件的结构如下所示: intVariable TotalNumberofRecord StringVariable名称IntVariable年龄CharVariable性别 StringVariable名称IntVariable年龄CharVariable性别 这是二进制文件(

我必须从一个二进制文件中读取,然后我应该按名称顺序显示输出

问题是: 编写一个从二进制文件person.dat读取数据的程序。(请从网站下载二进制文件。)然后,按姓名升序显示姓名、年龄和性别(M–男性,F–女性)

二进制文件的结构如下所示:

intVariable TotalNumberofRecord

StringVariable名称IntVariable年龄CharVariable性别

StringVariable名称IntVariable年龄CharVariable性别

这是二进制文件(person.dat)中的内容 艾娃·穆罕默德·阿里·姆斯蒂·努雷尼F谭美宽F 穆图·萨米·阿尔文·坦姆

============================================

这是我制作的代码。问题是我不知道如何按字母顺序对输出进行排序。请帮我做这个,谢谢

    try {
        ObjectInputStream inputStream = new ObjectInputStream (new FileInputStream("C:/Users/user/Desktop/person.dat"));

        String input;
        int age, record;
        char gender;

        record = inputStream.readInt();
        System.out.println("Total number of records: "+record);

           try{ 
              while(true) {
                input = inputStream.readUTF(); 
                age = inputStream.readInt(); 
                gender = inputStream.readChar(); 

                System.out.println(input+" " +age +" " +gender);}

           }catch(EOFException e){}

        inputStream.close();

    } catch (FileNotFoundException e) {
    System.out.println("File was not found"); 
    } catch (IOException e) {
    System.out.println("Problem with file output.");
}

要对数据进行排序,必须首先将数据放入集合(如
ArrayList
),对其进行排序,然后输出

在将数据放入集合之前,应该创建一个
,将数据保存在一起。它应该是一个非常简单的类,只接受构造函数中的名称、年龄和性别

要对类的实例进行排序,请使类实现接口。
.compareTo
方法只能调用被比较名称的相同方法


我希望这足以理解您其余的课堂讲稿。

为了补充9000的建议,我可以创建一个
Person
类,作为要添加到可排序Java集合(即列表、集合等)的记录

假设您选择了
列表
,您可以执行以下操作:

List<Person> records = new ArrayList<Person>();
records.add(new Person("Joe", 41, M));
records.add(new Person("Anne", 23, F));
records.add(new Person("Walter", 18, M));
...
为了确保如何正确地实现这一点,我建议在Oracle Java网站上查看本Java教程。您可能需要三种类型的
比较器
名称比较器
年龄比较器
,以及
性别比较器
。这样,您就可以按姓名、年龄或性别对记录进行排序。或者,更好的是,你可以把它们结合起来,这样你就可以按名字和年龄来分类;比如说

List<Person> records = new ArrayList<Person>();
records.add(new Person("Joe", 41, M));
records.add(new Person("Anne", 23, F));
records.add(new Person("Walter", 18, M));
...
Collections.sort(list, new Comparator<Integer>()
{
    public int compare(Integer age1, Integer age2) {
        return (age1 > age2 ? -1 : (age1 == age2 ? 0 : 1));
    }
});