簡體   English   中英

我如何創建一個類來對Java中的文件進行排序

[英]How do I create a class to sort a file in java

我讓程序從用戶讀取文件(包含名字和姓氏)並打印出來。 現在,我需要編寫一個方法來按姓氏對文件內容進行排序,以在主目錄中調用。 我的問題是從哪里開始。 我開始為sortFile做我的課,但被困在什至開始的地方。

package javaproject1;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;

public class JavaProject1 {

    public static void main(String[] args) throws FileNotFoundException 
    {
    String check = "y";
        do{
        Scanner fileRead = new Scanner(System.in);
        System.out.println("Enter the name of the file: ");
        File myFile = new File(fileRead.next());
        Scanner scanTwo = new Scanner(myFile);

        while(scanTwo.hasNext())
        {
            String i = scanTwo.next();
            String j = scanTwo.next();
            String sortLast;

            System.out.println(i + " " + j + " ");
        }

        System.out.println();
        Scanner anw = new Scanner(System.in);
        System.out.println("Add another? y/n ");
        check = anw.next();
        }while(check.equals("y"));
    }  

    public File sortFile(String sortLast)
    {

    }
}

創建一個實現Comparable接口的Person類:

public class Person implements Comparable<Person> {
    protected String firstName;
    protected String lastName;

    public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    @Override
    public String toString() {
        return firstName + " " + lastName;
    }

    @Override
    public int compareTo(Person o) {
        return this.lastName.compareTo(o.lastName);
    }
}

該類重寫compareTo方法,定義排序。

然后,您可以將讀取的文件內容存儲在TreeSet類的SortedSet<Person>

假設i是名字, j是姓氏,請在代碼中添加以下兩行:

String check = "y";
SortedSet<Person> persons = new TreeSet<>();

System.out.println(i + " " + j + " ");
persons.add(new Person(i, j));

persons將始終包含您到目前為止閱讀的文件內容,並按姓氏排序。

}while(check.equals("y")); 然后,您可以執行以下操作:

for (Person person : persons) {
    System.out.println(person);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM