Java 数组列表按字母顺序排序

Java 数组列表按字母顺序排序,java,sorting,arraylist,Java,Sorting,Arraylist,我得到的任务是制作一个包含3个类的电话簿,运行所有类的驱动程序,电话簿和一个人类 我遇到的问题是我无法进行Collection.sort(telbook.personen) 我想知道的是,我必须添加或替换什么才能使它在arraylist中排序 因为我现在把它作为一个函数,我可以自己运行来检查它是否排序,但这不起作用 驾驶员等级: /** * Created by ricardo on 2/26/2015. */ import java.util.*; public cla

我得到的任务是制作一个包含3个类的电话簿,运行所有类的驱动程序,电话簿和一个人类

我遇到的问题是我无法进行Collection.sort(telbook.personen) 我想知道的是,我必须添加或替换什么才能使它在arraylist中排序 因为我现在把它作为一个函数,我可以自己运行来检查它是否排序,但这不起作用

驾驶员等级:

        /**
 * Created by ricardo on 2/26/2015.
 */

import java.util.*;

public class Driver {
    Phonebook telbook = new Phonebook();
    Scanner scan = new Scanner(System.in);
    String newLine = System.getProperty("line.separator");
    String[] Commands = {"/addperson - add a person to my beautiful program",
            "/listpersons - for full list of persons",
            "/removeperson - to remove a made person",
            "/sortlist - sorts the phonebook (alphabetically)"};
    private boolean running;
    private boolean startmessage = false;

public static void main(String[] args) {

    Driver n = new Driver();
    n.run();

}

public void run() {
    running = true;
    startProgram();
}

public void startProgram() {
    while (running) {
        if (!startmessage) {
            System.out.println("Type /commands for all available commands.");
            startmessage = true;
        }
        String entered = scan.nextLine();
        if (entered.equals("/commands")) {
            for (int i = 0; i < Commands.length; i++)
                System.out.println(Commands[i]);
        } else if (entered.equals("/addperson")) {
            addPerson();
        } else if (entered.equals("/listpersons")) {
            listPersons();
        } else if (entered.equals("/removeperson")) {
            removePerson();
        } else if (entered.equals("/sortlist")) {
            sortList();
        } else {
            System.out.println("Command not available. Type /commands for full list of commands");
        }
    }
}

public void addPerson() {
    System.out.println("Fill in your name");
    String addname = scan.nextLine();
    System.out.println("Fill in your adress");
    String addadress = scan.nextLine();
    System.out.println("Fill in your city");
    String addcity = scan.nextLine();
    System.out.println("Fill in your phonenumber");
    String addphonenumber = scan.nextLine();
    System.out.println("Your data has been saved!");
    Person addperson = new Person(addname, addadress, addphonenumber, addcity);
    telbook.personen.add(addperson);
    //sortList();


}

public void removePerson() {
    listPersons();
    System.out.println("Insert the ID of the person to be removed");
    int ID = Integer.parseInt(scan.nextLine());
    if (ID > telbook.personen.size()) {
        System.out.println("There is no person with this ID, please select a different ID");
        removePerson();

    } else {
        telbook.personen.remove(ID);
        System.out.println("Person with the ID of " + ID + " has been removed");
    }
}

public void listPersons() {
    int ID = 0;
    if (telbook.personen.isEmpty()) {
        System.out.println("There is no person added yet. type /addperson to do so");
    }
    for (int i = 0; i < telbook.personen.size(); i++) {
        System.out.println("ID:" + ID + newLine + " name: " + telbook.personen.get(i).name + newLine + " adress: " + telbook.personen.get(i).adress + newLine + " city: " + telbook.personen.get(i).city + newLine + " phonenumber: " + telbook.personen.get(i).phonenumber);
        ID++;


    }


}

public void sortList() {
    Collections.sort(telbook.personen);
}

您应该让您的
Person
类实现该接口,并具体说明如何比较两个
Person
对象


另一种方法是实施作业,并使用

作业(即家庭作业)暗示独立工作。请不要随便问这样一些具体而无用的问题,这就是为什么学校几乎毫无用处。什么样的现实场景会将您限制为3类?学校似乎把创造力埋在了焦土深处。无论如何:+ricardo spek一旦得到答案,你就应该删除这个问题。我不是反对者,但我担心这是因为你用聪明的答案鼓励这些愚蠢的问题。@Andremoniy(1)没有“愚蠢的问题”,不熟悉
比较器的java专家没有什么错(这个问题确实需要一些调整)。(2)我认为不给一个人代码就告诉他应该做什么没有坏处。这鼓励了学习。但我认为(作为一名有7年教学经验的教师)这样的辅导每个学生都必须独立完成。此外,这样的问题对SO的其他读者来说毫无用处,因为它非常具体。这就是我问它的原因,它是具体的,因此没有其他已经问过的问题有帮助
        /**
 * Created by ricardo on 2/26/2015.
 */

    import java.util.*;

    public class Phonebook {
        ArrayList<Person> personen = new ArrayList<Person>();


    }
       /**
 * Created by ricardo on 2/26/2015.
 */
public class Person {
    String name, adress, phonenumber, city;

    public Person(String name, String adress, String phonenumber, String city) {
        this.name = name;
        this.adress = adress;
        this.city = city;
        this.phonenumber = phonenumber;
    }

//    public String getCity() { return city; }
//
//    public void setCity(String city) {
//        this.city = city;
//    }
//
//    public String getName() {
//        return name;
//    }
//
//    public void setName(String name) {
//        this.name = name;
//    }
//
//    public String getAdress() {
//        return adress;
//    }
//
//    public void setAdress(String adress) {
//        this.adress = adress;
//    }
//
//    public String getPhonenumber() {
//        return phonenumber;
//    }
//
//    public void setPhonenumber(String phonenumber) {
//        this.phonenumber = phonenumber;
//    }
}