2011-07-10 6 views
-1

シンボルテーブルはキーでソートされた結果を返しますが、シンボルテーブルを値でソートするにはどうすればよいですか?私はArrays.sort(st,st.get(key))を使用しますが、私にエラーを与える:シンボルテーブルをJavaの値で並べ替える

cannot find symbol: method sort(ST,java.lang.Integer)


私のプログラムは、このようなものを見て。まだ取得エラー:

import java.util.Comparator; 
import java.util.Arrays; 

public class DictionaryCounter { 

    private final String key; 

    public DictionaryCounter (String key){ 
      this.key = key; 
     } 

    public static class Frequency implements Comparator<DictionaryCounter>{ 
     public int compare(DictionaryCounter x, DictionaryCounter y){ 
      return x.get(key).compareTo(y.get(key)); 
     } 
    } 

    public static void main(String[] args) { 

     ST<String, Integer> st = new ST<String, Integer>(); 
     //String key; 

     while (!StdIn.isEmpty()) { 
      key = StdIn.readString(); 
      if (!st.contains(key)) 
      { st.put(key, 1); } 
      else 
      { st.put(key,st.get(key) + 1); } 
     } 

     Arrays.sort(st,new Frequency (key)); 
     for (String s: st.keys()) { 
      System.out.println(s + " " + st.get(s)); 
     } 
    } 
} 
+0

もっとコードしてください。 – emboss

+0

これは、APIを使用する人がほとんどいないことに私を驚かせるものです。それはまったく意味がありません。 – mre

答えて

5

あなたがいないソート非常にそのようにすることができます - あなたはComparator<T>を実装する必要がある - 例えば:

public class FooComparator implements Comparator<Foo> { 

    private final String key; 

    public FooComparator(String key) { 
     this.key = key; 
    } 

    public int compare(Foo x, Foo y) { 
     return x.get(key).compareTo(y.get(key)); 
    } 
} 

が続いて使用します。

Arrays.sort(st, new FooComparator(key)); 

(それはするのは難しいですもっと情報なしで関係するタイプを推測してください。しかし、うまくいけば、これはあなたに十分なスタートを与えるでしょう...)

+0

まだエラーが発生しています:私のpragram looke smthing this: – sam

関連する問題