2012-03-28 7 views
0

文字列の一意のリストを逆順に並べ替える必要があります。 どのコレクションを使用し、最良の方法を実装します。逆順の文字列の一意のリストを並べ替えます

マイSOLN: リスト内の文字列を取り、 はリストを渡すコンパレータを作り、そしてあなたが望むことを指定したので、コレクションのソート操作

public class SortStringsReverse { 

    public static void main(String[] args) { 
     List l = new ArrayList(); 
     l.add("ABC"); 
     l.add("ZXY"); 

     StringComparator comparatorObj = new StringComparator(); 
     Collections.sort(l, comparatorObj); 
     for(Object s: l){ 
      System.out.println("values are " + (String)s); 
     } 
    } 
} 

class StringComparator implements Comparator{ 

    public int compare(Object arg0, Object arg1) { 
     return ((String)arg1).compareTo((String)arg0);//return ((String)arg0).compareTo((String)arg1); 
    } 

} 
+0

「逆の年代順」とはどういう意味ですか?文字列内に時間形式がない場合、それは何ですか?あなたが比較をする方法を理解するのは難しいです。あなたは "逆語順"を意味しましたか? –

+1

また、「最良の方法」とはどういう意味ですか?最も効率的なパフォーマンス/メモリ、または最も簡単なコードですか? –

+0

1.5とjava 1.4を混在させます。 'List '、 'StringComparator implement Comparator '、 'public int compare(String arg0、String arg1)'を使用してください。コンパイラがあなたのためにキャストします –

答えて

1

にクラスを実装し、このコンパレータのオブジェクトユニークの項目はソートの方法で、Javaの場合、これのための最良のツールはTreeSetです(SortedSetの実装は行います)。通常、TreeSetクラスはアイテムを昇順に格納しますが、幸いなことにカスタムComparatorオブジェクトを引数として変更できます。

私は、時系列順がここでは意味がありませんので、あなたが逆アルファベット順にソート文字列をしたいあなたの質問で仮定しているが、本当にあなた自身のComparator、必要に応じてを実装することができます。現在、Comparatorは、元のJavaの方法に従って文字列をソートします。アルファベットのさらに下の文字列は、アルファベットの先頭に近い文字列と比較されます(たとえば、"bananas".compareTo("zebra")は肯定結果を返します)"zebra".compareTo("bananas") 1アルファベット順を逆にするには、我々はこの二重性を利用し、比較の順序を逆にすることができます。最初に対する二番目の引数を比較し、のような:。

class StringComparator implements Comparator<String>{ 

    public int compare(String arg0, String arg1) { 
     return arg1.compareTo(arg0); 
    } 

} 

を今すぐあなたのTreeSet<String>オブジェクトに、そのクラスのオブジェクトを渡します、

+0

返信して正しく(私はいくつかの間違った単語を使用して)と仮定して.. ..あなたが言及したコードは、鉱山(ジェネリックとtreeSetを除く)、儀式と同じですか? –

+0

コードは基本的に同じですが、あなたの質問には複雑な解決策は必要ありません。 TreeSetは2つのことを保証するので、 'List'ではなく' TreeSet'を使うべきです。まず、その中のすべての項目が一意であることを保証します。 2番目に、すべてのアイテムがソートされます。これは、どちらの条件も保証されていない 'List'よりはるかに良い選択肢です。コンパイラをコードで作成し、キャストする必要がなくなるため、私のサンプル「Comparator」でジェネリックを使用しました。他に何かご質問は? – fruchtose

関連する問題