按字母排序的arraylist

时间:2015-03-04 09:42:09

标签: java sorting arraylist

我已经完成了编写一个包含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);
}

}

电话簿课程:

        /**
 * 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;
//    }
}

1 个答案:

答案 0 :(得分:0)

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

另一种方法是实施Comparator,然后使用Collections.sort(arrayList,comparator)