• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:配列を大きい順にソートしたいのですが・・・)

配列を大きい順にソートする方法

このQ&Aのポイント
  • 配列を大きい順にソートする方法を教えてください。
  • for文でlengthを求め、c.intValue()で表示する場合の具体的なソースコードを教えてください。
  • HashMapを使用して配列の要素を数え、数が大きい順に表示する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

http://ideone.com/q8Xsd 1.18行目まではデータをHashMap<String,Integer>に次々突っ込んでいるだけ。 2.今回はソートだから影響ないけど、元々のmapを弄りたくないけど、データを色々変更して遊びたいときのために、HashMap<String,Integer>のコンストラクタに渡して複製した。 http://ideone.com/vO6J6http://ideone.com/0flik の違いを見るとわかるかも。 HashMapに格納されたキーの順番で格納順じゃないんだね 3.19行目と20行目は、Collection.sortに渡せるArrayList<E>に移し変えるため、entrySet()はCollection<E>なので渡せる。 4.Collection.sort(list,Collection.reverseOrder(new SampleSort()))でソート。一応SampleSortは小さい順で並び替えるように作った。ソッチの方が慣れているから。別にcompareToの中の戻り値を-1倍すれば、別にreverseOrderをする必要はない。 5. 24行目から27行目は大きな順に並びかえられているリストを出力しているだけ。 #質問者の事例と完全一致じゃないけど、その辺は自分で脳内補完できるよなあ?と思うのでこっちのやりやすい事例で行った。 ==================== >経路と回数をパックにするクラスを定義する。 でもいいんだけど、質問の段階で19行目の段階にいて、 おそらく、ideone.comでは org.apache.commons.collections.CollectionUtils は使えないし、使えたとしても、質問者からjarファイルどうやって使うの云々言われると面倒。となるとループを書くハメになるからイヤだなと。だからもとのMap.Entry<String,Integer>を再利用した。

tsa63688
質問者

お礼

とても分かりやすく、無事大きい順でソートすることが出来ました。 ご回答ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

1.経路と回数をパックにするクラスを定義する。 2.whileループの中で、1で定義したクラスの配列に(あるいはArrayListに)格納。 3.Array.sortでソート。 *ソート順は回数、経路となると思います。そのようにソートできるようにComparatorを実装してください。

tsa63688
質問者

補足

ご回答ありがとうございます。 申し訳ないのですが、詳しいソース等ご教授願いませんでしょうか? ど素人なもので、 //経路と回数をパックにするクラスを定義する。 もどうすればいいか分からず、ましてComparatorも使用したことがなく、調べても使い方が分かりませんでした。

すると、全ての回答が全文表示されます。

関連するQ&A