3

Arentは注文されたコレクションを一覧表示し、注文されたArentを設定しますか?それでは、なぜこのプログラムは文字列をリストではなくセットでアルファベット順に並べ替えるのですか?私は2つの重複部分を理解しています。

    PrintStream out = System.out;

    List<String> set = new ArrayList<String>();
    String s = "ILLUSIONS";

    for(int i = 0; i< s.length(); i++)
    {
        set.add((new Character(s.charAt(i))).toString());

    }
    out.println(set);

出力:ILLUSIONS


    PrintStream out = System.out;

    Set<String> set = new TreeSet<String>();
    String s = "ILLUSIONS";

    for(int i = 0; i< s.length(); i++)
    {
        set.add((new Character(s.charAt(i))).toString());

    }
    out.println(set);

出力:ILNOSU

4

3 に答える 3

7

リストは要素インデックスによって「順序付け」られます。つまり、要素の挿入順序が保持されます。セット(一般的に)はそのような順序を保持しません。いくつかの例外:

  • これは、その要素を自然に「ソートされた」順序に保つTreeSet特定のです。Set
  • これ、挿入順序を保持するLinkedHashSet特定Setのです。

リストを「注文」する場合は、手動で行う必要があります。

Collections.sort(list);

実際、リストを「ソート」することにより、すべてのリスト要素のインデックスを再配置します。関連するJavadocを参照してくださいCollections.sort()

于 2012-08-16T07:48:54.407 に答える
4

リストが順序付けられていると言うとき、それは実際には、リストが要素が挿入された順序を保持し、リストを取得できる順序が予測可能であることを意味します。

セットは注文されていません。その焦点は、ユニークな要素を持つことだけです。TreeSetはSortedSetであり、一意性を維持するとともに、要素を並べ替えられた順序で維持します。したがって、上記の結果

于 2012-08-16T07:57:05.407 に答える
1

はい、リストは順序付けられています。つまり、イテレータによってアイテムが返される順序が明確に定義されています(アイテムが挿入された順序で返されます)。アイテムを別の順序(アルファベットなど)で返す場合は、リストを明示的に並べ替える必要があります。

java.util.Collections.sort(myList);
于 2012-08-16T07:50:12.337 に答える