ツールバーの

13692 ワード

ComparentとComparatorは、Java内のオブジェクトをソートできます.

Comparable


ソート時に基本的に適用されるソート基準を定義する方法のインタフェース.
package : java.lang.ComparableJavaが提供するソート可能クラスは、Compareableインタフェースを実装し、ソート時に対応するソートを行います.(Interger, Double:昇順、String:プリソート)

  • 実施方法
    ソートするオブジェクトにCompareableインタフェースを実装した後、比較メソッドを上書きすることで実装します.

  • CompareTo()メソッドの作成方法
    現在のオブジェクト<パラメータ内のオブジェクト:負のループバック
    現在のオブジェクト==パラメータを超えたオブジェクト:0
    現在のオブジェクトに切り替える>パラメータのオブジェクトに切り替える:戻る
    負数または0の場合、オブジェクトの位置は変更されません.正の値の場合、2つのオブジェクトの位置は変更されます.

  • 使用方法
    Arrays.sort(array)
    Collections.sort(list)
  • 🎈 Arrays.sort(array) vs Collections.sort(list)

  • Arrays.sort()
    アレイのソート:
    TimSortは、バイト[]、char[]、double[]、int[]、Object[]、T[]などのオブジェクトアレイで使用されます.
    ≪オブジェクト・アレイ|Object Array|oem_src≫:新しく定義されたクラスのアレイ権限アレイは、2つのPivot QuickSortを使用します.
    Primitive Array:基本データ型の配列
  • Collections.sort()
    List Collectionソートの場合:
    Ex)ArrayList、LinkedList、Vector等*内部Array.sort()
  • を使用
    Compareableインタフェースの使用
    // x좌표가 증가하는 순, x좌표가 같으면 y좌표가 감소하는 순으로 정렬하라.
    class Point implements Comparable<Point> {
        int x, y;
    
        @Override
        public int compareTo(Point p) {
            if(this.x > p.x) {
                return 1; // x에 대해서는 오름차순
            }
            else if(this.x == p.x) {
                if(this.y < p.y) { // y에 대해서는 내림차순
                    return 1;
                }
            }
            return -1;
        }
    }
    
    // main에서 사용법
    List<Point> pointList = new ArrayList<>();
    pointList.add(new Point(x, y));
    Collections.sort(pointList);

    Comparator


    ソート可能クラスのデフォルトのソート基準とは異なるソート可能クラスのソートインタフェース
    package: java.util.Comparator主に익명 클래스に使用されます.
    一般的な基本ソート方法は、昇順ソート내림차순である.

  • 実施方法
    Comparatorインタフェースを実装した後,Comparator()メソッドを超えたMyComparatorクラスを記述する.

  • 比較()メソッドの作成方法
    1番目のパラメータに移動するオブジェクト<2番目のパラメータに移動するオブジェクト:負の戻り値
    1番目のパラメータのオブジェクトに移動=2番目のパラメータのオブジェクトに移動:0
    1番目のパラメータのオブジェクトに移動>2番目のパラメータのオブジェクトに移動:戻る
    負数または0の場合はオブジェクトの位置が保持され、正の値の場合は2つのオブジェクトの位置が変更されます.
    すなわち、Integer.compare(x,y)(昇順ソート)と同じ概念である.
    return (x < y) ? -1 : ((x == y) ? 0 : 1);
    降順ソートでは、2つのパラメータの位置が変更されます.
    Integer.compare(y,x)(降順ソート)

  • 使用方法
    Arrays.sort(array, myComparator)
    Collections.sort(list, myComparator)
    Arrays.sort(), Collections.sort()メソッドは、2番目のパラメータとしてComparatorインタフェースを受信することができる.
  • 🎈 2番目のパラメータとしてComparatorインタフェースを受信します。


    優先キュージェネレータの2番目のパラメータはComparatorインタフェースです.
    PriorityQueue(int initialCapacity, Comparator comparator)
    指定したComparatorのソート方法に従って優先度を割り当てます.
    Comparatorインタフェースの使用
    // x좌표가 증가하는 순, x좌표가 같으면 y좌표가 감소하는 순으로 정렬하라.
    class MyComparator implements Comparator<Point> {
      @Override
      public int compare(Point p1, Point p2) {
        if (p1.x > p2.x) {
          return 1; // x에 대해서는 오름차순
        }
        else if (p1.x == p2.x) {
          if (p1.y < p2.y) { // y에 대해서는 내림차순
            return 1;
          }
        }
        return -1;
      }
    }
    
    // main에서 사용법
    List<Point> pointList = new ArrayList<>();
    pointList.add(new Point(x, y));
    MyComparator myComparator = new MyComparator();
    Collections.sort(pointList, myComparator);
    Comparator匿名クラスの使用
    Comparator<Point> myComparator = new Comparator<Point>() {
      @Override
      public int compare(Point p1, Point p2) { 위와 동일 }
    };
    
    List<Point> pointList = new ArrayList<>();
    pointList.add(new Point(x, y));
    Collections.sort(pointList, myComparator);

    Arrays.sort()


    ここから.
    プログラマはLv 2をソートします.最大答えを出す。説明する。ツールバーのfor(String str : arr)
    その他のコンテンツの作成と学習を参照してください