スポンサーサイト
--/--/-- (--) --:--:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | page top↑
Javaで配列をソートした時のインデックスを返したい
2011/11/12 (Sat) 11:14:57
Javaで、double値を持つ配列、たとえば

double[] a = new double[3];
a[0] = 4.5;
a[1] = 0.1;
a[2] = 8.3;

という配列aに対して、中身の降順にソートした時の添え字の配列、
この例だと{2, 0, 1}を返したい時に作ったメソッド。
もっとシンプルな方法はあるかな?

    // arrayを降順に並べ替えた時のindexを返す
    int[] sortedIndex(double[] array) {
        int len = array.length;
        int[] order = new int[len];
        Map<Integer, Double> map = new HashMap<Integer, Double>();
        for (int i = 0; i < len; i++) {
            map.put(i, array[i]);
        }
        List<Map.Entry<Integer, Double>> entries = new ArrayList<Map.Entry<Integer, Double>>(
                map.entrySet());
        Collections.sort(entries, new Comparator<Map.Entry<Integer, Double>>() {
            @Override
            public int compare(Entry<Integer, Double> o1, Entry<Integer, Double> o2) {
                return (o2.getValue()).compareTo(o1.getValue());
            }
        });
        int i = 0;
        for (Map.Entry<Integer, Double> entry : entries) {
            order[i++] = entry.getKey();
        }
        return order;
    }

こちらのページを参考にさせていただきました。
javaeee.blogspot.com/2009/06/hashmap-value.html
プログラミング | トラックバック(0) | コメント(0) | page top↑
<<タイトルなし | ホーム | NGワード追加>>
コメント
コメントの投稿













管理者にだけ表示を許可する

トラックバック
トラックバックURL
→http://kerorou.blog84.fc2.com/tb.php/241-a6c126a0
| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。