排序Arraylist? Treeset无法正常工作。还有其他选择吗?

时间:2013-03-19 20:56:11

标签: java arrays

我正在尝试将我的数组中的联系人按姓氏按字母顺序排序(注意:首先通过姓氏引入联系人“Brown and Adams”是我正在测试的姓氏。似乎我的代码树集不行。有人可以帮帮我吗?

    public void print() {
    // print the list
    for (int i = 0; i < contacts.size(); i++) {
        Set<String> set = new TreeSet<String>();
        String str;

        str = contacts.get(i).toString();
            set.add(str);


        for (String key : set) {
            System.out.println(key);

        }
    }
}

/ * --------------我的运行---------

联系信息已保存。

brown,asdf,asdf,asdf,asdf,asdf,asdf,asdf

adams,asdf,asdf,asdf,asdf,asdf,asdf,asdf

--------------------------------- / *

3 个答案:

答案 0 :(得分:2)

你在做什么是错的!

Set<String> set = new TreeSet<String>();
for (int i = 0; i < contacts.size(); i++) {
       set.add(contacts.get(i).toString());
}

for (String key : set) {
  System.out.println(key);
}

答案 1 :(得分:0)

使用Collections类... Collections.sort(contacts);,除非您想使用自己的代码来评估您的技能; - )

答案 2 :(得分:0)

一些问题,首先是在循环的每次迭代中创建一个新的TreeSet来填充集合。其次,你正在调用一个循环来打印TreeSet中的所有内容(你刚刚制作并放入一个东西),所以你基本上所做的就是按原始顺序打印数组。以下是一些修复这两个问题的代码:

public void print() {
    Set<String> set = new TreeSet<String>();

    // Fill up the TreeSet
    for (int i = 0; i < contacts.size(); i++) {
        String str = contacts.get(i).toString();
        set.add(str);
    }
    // Print out the TreeSet
    for (String key : set) {
        System.out.println(key);
    }
}

}