2017-05-24 14 views
0

Javaで配列のArrayListをソートする方法が分かっているかどうかを知りたいですか? 私は0から1のスコアを特定の配列に与える関数を持っています。そして、私はArrayListをソートして、最高のスコアを持つ配列が最初に来るようにしたいと思います。Javaで配列のArrayListをソートする

public double evaluate(int[] toEvaluate) { 
    double result = 0.0; 
    for (int i = 0; i < toEvaluate.length; i++) { 
     result += table[i][casesMap.get(toEvaluate[i])]; 
    } 
    return result/toEvaluate.length; 
} 

+3

Google for Comparator – GhostCat

答えて

3

カスタムComparatorと一緒Collections.sort()を使用する必要があります。

List<Integer[]> arrays = new ArrayList<>(); 

    arrays.add(new Integer[]{1, 2}); 
    arrays.add(new Integer[]{3, 4}); 

    Collections.sort(arrays, new Comparator<Integer[]>() { 
     public int compare(Integer[] a, Integer[] b) { 
      return 1; // FIX this according to your needs 
     } 
    }); 

compare()は上記だけでスタブである、あなたはdocumentationに応じてそれを実装する必要があります。

0

あなたは降順でリストをソートするためのコンパレータを使用するか、またはあなたがコレクションのソート方法を使用することができますが、カンプ値を計算するために、あなたの関数を使用することができる場所コンパレータを書いて、メソッドのオーバーライドを比較する

@Override 
       public int compare(Integer[] o1, Integer[] o2) { 
       int o1Number=ratingFunction(o1) ; 
       int o2Number=ratingFunction(o2) ; 
       int cmp=o1Number.compareTo(o2Number); 
        return cmp; 
       } 
0

を持っており、

List<Integer> numberList =new ArrayList<Integer>(); 
    numberList.add(3); 
    numberList.add(1); 
    numberList.add(2); 

    //before sort 
    for (Integer integer : numberList) { 
     System.out.println(integer); 
    } 

    //sorting 
    Collections.sort(numberList); 
    Collections.reverse(numberList); 

    //after sort 
    for (Integer integer : numberList) { 
     System.out.println(integer); 
    } 
0

あなたはそのためstream APIを使用することがあります:それは 何かこのように、降順にするために逆の方法を使用します。だから、私たちが得点関数を持っているとしましょう(私は例のためにそれを単純化しました)。

public static double evaluate(int[] arr){ 
    return Arrays.stream(arr).sum()/arr.length; 
} 

今、私たちはComparator.comparing方法でそれを使用することができます:コードの背後にある考え方は、非常に簡単です

List<int[]> list = Arrays.asList(new int[]{4, 5}, 
          new int[]{2, 3}, new int[]{0, 1}); 
List<int[]> sorted = list.stream(). 
     sorted(Comparator.comparing(Main::evaluate)). 
     collect(Collectors.toList()); 

sorted.forEach(x -> System.out.println(Arrays.toString(x))); 

、あなたはint[]の配列をソートする方法を定義するコンパレータを提供しています。私はこれが役立つことを願っています

関連する問題