2017-03-16 7 views
0

ArrayListのList []を使って実装された隣接リストを持っています。私はArrayListsのサイズの降順でリストをソートしたい。私はComparatorを書くことでこれをやろうと考えていました...しかし、どうすればいいですか?またはこれはちょうど不可能であり、私は別の方法でそれを行う必要がありますか?配列リストではなく配列リストをソートする方法は?

Collections.sort(adjacency, new Comparator<ArrayList<Integer>()>() { 
    public int compare(ArrayList<Integer> p1, ArrayList<Integer> p2) { 
     return Integer.compare(p1.length, p2.length); 
    } 
}); 

上のコードは機能していません。私は、ArrayList、List []、Listをコンパイラタイプとして試しました。リスト用のラッパークラスはありますか?申し訳ありませんが、これは教育を受けていないと聞こえるかもしれません。

List<Integer>[] adjacency; 
adjacency = (List<Integer>[]) new List[size]; 
for (int i = 0; i < size; ++i) { 
    adjacency[i] = new ArrayList<Integer>(); 
} 

はありがとう:

これは私が隣接リストを作った方法です。

+1

'p1.length'を' p1.size() 'にするべきではありませんか?だからあなたは 'ArrayList'の配列を持っていて、' Collections.sort'を使って配列をソートしようとしています...? – MadProgrammer

答えて

2

上のコードが機能していません。

P1、P2がのArrayListであり、彼らは長さというフィールドを持っていけないので、コードが動作していない

、彼らは方法size()を持っている、それはあなたが必要とするものです。

return Integer.compare(p1.size(), p2.size()); 
+2

これに答える前に真剣に気をつけて、どのように 'adjacency'を作成しているかを本当に詳しく見てください;) – MadProgrammer

関連する問題