电话簿按字段排序按字段名字排序

时间:2018-04-28 04:28:34

标签: java arrays sorting javafx

我正在尝试获取电话簿的JavaFx应用程序,以便按照名字按字母顺序对联系人列表进行排序。但是,现有循环未按正确顺序列出名称。这是排序方法:

 public static void sortContactList() {
        try {
        for (int i = 0; i < contactList.length - 1; i++) {
            for (int j = i + 1; i < contactList.length; j++) {
                if ((contactList[j].first.toCharArray()[0]) < (contactList[i].first.toCharArray()[0])) {
                    Entry tmp = contactList[j];
                    contactList[j] = contactList[i];
                    contactList[i] = tmp;
                }
            }
        }
    } catch (NullPointerException exc) {}
}

下面显示了如何组成联系人列表。它存储在一个文件中,首先是人的名字作为字符串:

class Entry {
public String first, last, number, note;
}
public class Phonebookfor1510 {
public static Entry[] contactList;
public static int num_entries;
public static void main(String args[]) throws Exception {
    int i;
    char C;
    String code, Command;
    contactList = new Entry[200];
    num_entries = 0;

我的其余代码可以使用它。我只是想知道它为什么不按字母顺序排序值列表。任何帮助将不胜感激!!

3 个答案:

答案 0 :(得分:0)

您可以做的最好的事情是使用TreeSet。像给定的例子一样

TreeSet<String> stringSet = new TreeSet<>();
        stringSet.add("Mummy");
        stringSet.add("Mahima");
        stringSet.add("Gaurav");
        stringSet.add("Naresh");
        stringSet.add("Bhawna");

        for(String s : stringSet) {
            System.out.println(s);
        }

输出 Bhawna 拉夫 Mahima 木乃伊 纳雷什

答案 1 :(得分:0)

我认为第二个for循环永远不会在没有NullPointerException的情况下结束。您正在增加j,但会检查i<contactList

在这种情况下,您可以使用Arrays.sort()

答案 2 :(得分:0)

看看这个示例代码:

public class Entry implements Comparable<Entry>{
    private Long id;
    private String fullName;
    private String phoneNumber;

    public int compareTo(Entry other) {
        if(other==null) throw new NullPointerException();
        /*
        -1 : phonenumber of current entry is smaller that other
        0  : phonenumber of current entry is equal to other
        +1 : phonenumber of current entry is greater than other
         */
        return (this.getFullName().compareTo(other.getPhoneNumber()));
    }
    public static void main(String[] args){
        Entry[] entriesArray = getEntriesArrayListFromSomewhere();
        Arrays.sort(entriesArray);
    }

   //getters ans setters
}