0

我正在尝试按姓氏的字母顺序对数组中的联系人进行排序(注意:联系人首先按姓氏引入“布朗和亚当斯”是我正在测试的姓氏。看来我的代码树集不是工作。有人可以帮我吗?

    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);

        }
    }
}

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

联系信息已保存。

棕色, asdf, asdf, asdf, asdf, asdf, asdf, asdf

亚当斯, asdf, asdf, asdf, asdf, asdf, asdf, asdf

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

4

3 回答 3

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);
}
于 2013-03-19T21:02:23.977 回答
0

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

于 2013-03-19T21:02:24.347 回答
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);
    }
}

}

于 2013-03-19T21:05:41.127 回答