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 内のすべて (作成して 1 つ入れたもの) を出力するループを呼び出しているため、基本的には配列を元の順序で出力するだけです。以下は、これらの問題の両方を修正するコードです。

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 に答える