Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのcompareTo()メソッドとcompare()メソッドの違いは何ですか?


同等 インターフェイスはcompareTo()を提供します オブジェクトの順序付けのためのメソッド。この順序はクラスと呼ばれます 自然順序付け およびcompareTo() この方法は、自然比較方法と呼ばれます。 。 コンパレータ インターフェイスは、並べ替え操作を実行するためのメソッドを提供します 。 コンパレータを使用する 複数の並べ替えシーケンスを実行できるインターフェース 。複数のデータメンバーに関してオブジェクトを並べ替えることができます。

compareTo()

compareTo() メソッドはこのオブジェクトをo1オブジェクトと比較し、整数を返します

構文

public int compareTo(Object o1)
  • このオブジェクトがo1未満の場合にのみ、–ve番号を返します。
  • このオブジェクトがo1より大きい場合にのみ、+veの数値を返します。
  • このオブジェクトがo1と等しい場合にのみ、0を返します。

import java.util.*;
class Employee implements Comparable {
   String name;
   int age;
   Employee(String name, int age) {
      this.name = name;
      this.age = age;
   }
   //overridden compareTo method
   @Override
   public int compareTo(Object o) {
      return this.age - ((Employee) o).age;
   }
}
public class ComparableDemo {
   public static void main(String[] args) {
      // CREATION
      List list = new ArrayList<>();
      //INSERTION
      list.add(new Employee("Krishna", 30));
      list.add(new Employee("Archana", 28));
      list.add(new Employee("Vineet", 25));
      list.add(new Employee("Ramesh", 38));
      list.add(new Employee("Alok", 28));
      System.out.println("Before sorting: ");
      for (Employee e : list) {
         System.out.print("[ EMP : age = " + e.age + " ] ");
      }
      //SORTING
      Collections.sort(list);
      System.out.println("After sorting: ");
      for (Employee e : list) {
         System.out.print("[ EMP : age = " + e.age + " ] ");
      }
   }
}

出力

Before sorting:
[ EMP : age = 2 ] [ EMP : age = 33 ] [ EMP : age = 11 ] [ EMP : age = 34 ] [ EMP : age = 7 ]
After sorting:
[ EMP : age = 2 ] [ EMP : age = 7 ] [ EMP : age = 11 ] [ EMP : age = 33 ] [ EMP : age = 34 ]

compare()

compare() メソッドは最初のオブジェクトを2番目のオブジェクトと比較し、整数を返します

構文

public int compare (Object o1,Object o2)
  • o1がo2より小さい場合にのみ、–ve番号を返します
  • o1がo2より大きい場合にのみ+veの数値を返します
  • o1がo2と等しい場合にのみ0を返します

import java.util.*;
class Student {
   String name;
   int age, roll;
   Student(String name, int age, int roll) {
      this.name = name;
      this.age = age;
      this.roll = roll;
   }
}
class AgeComparator implements Comparator {
   @Override
   public int compare(Object o1, Object o2) {
      return ((Student) o1).age - ((Student) o2).age;
   }
}
class RollComparator implements Comparator {
   @Override
   public int compare(Object o1, Object o2) {
      return ((Student) o1).roll - ((Student) o2).roll;
   }
}
public class ComparatorDemo {
   public static void main(String[] args) {
      List list = new ArrayList<>();
      list.add(new Student("Ramesh", 30, 20));
      list.add(new Student("Adithya", 7, 10));
      list.add(new Student("Krishna", 25, 5));
      list.add(new Student("Vineet", 24, 15));
      System.out.println("BEFORE SORTING");
      for (Student e : list) {
         System.out.println("[ STU : name = " + e.name + " age = " + e.age + " roll = " + e.roll + "]");
      }
      Collections.sort(list,new AgeComparator());
      System.out.println("AFTER SORTING WITH AGE");
      for (Student e : list) {
         System.out.println("[ STU : name = " + e.name + " age = " + e.age + " ]");
      }
      Collections.sort(list,new RollComparator());
      System.out.println("AFTER SORTING WITH ROLL");
      for (Student e : list) {
         System.out.println("[ STU : name = " + e.name + " roll = " + e.roll + " ]");
      }
   }
}

出力

BEFORE SORTING
[ STU : name = Ramesh age = 30 roll = 20 ]
[ STU : name = Adithya age = 7 roll = 10 ]
[ STU : name = Krishna age = 25 roll = 5 ]
[ STU : name = Vineet age = 24 roll = 15 ]
AFTER SORTING WITH AGE
[ STU : name = Adithya age = 7 ]
[ STU : name = Vineet age = 24 ]
[ STU : name = Krishna age = 25 ]
[ STU : name = Ramesh age = 30 ]
AFTER SORTING WITH ROLL
[ STU : name = Krishna roll = 5 ]
[ STU : name = Adithya roll = 10 ]
[ STU : name = Vineet roll = 15 ]
[ STU : name = Ramesh roll = 20 ]

  1. JavaのJFrameとJDialogの違いは何ですか?

    JFrame フレームに追加されたコンポーネントはそのコンテンツと呼ばれ、 contentPaneによって管理されます。 。 JFrameにコンポーネントを追加するには 、 contentPaneを使用する必要があります 代わりに。 JFrame タイトルのウィンドウが含まれています 、境界線 、(オプション)メニュー バー およびユーザー -指定 コンポーネント 。 JFrame 移動できます 、サイズ変更 、アイコン化 JComponentのサブクラスではありません 。 デフォルトでは、JFrameは左上の角に表示されます 画面のr。指定した場所にフレームを表示するには

  2. JavaのGridLayoutとGridBagLayoutの違いは何ですか?

    GridLayout すべてのコンポーネントを長方形のグリッドに配置し、同じサイズの長方形に分割します 各コンポーネントは長方形の中に配置されますが、 GridBagLayout 柔軟です レイアウト マネージャー コンポーネントを垂直方向と水平方向に整列させます コンポーネントが同じサイズである必要はありません。各GridBagLayout オブジェクトは、動的な長方形のセルのグリッドを維持します 各コンポーネントがコンポーネントと呼ばれる1つ以上のセルを占有します 表示 エリア 。 GridLayout GridLayout コンポーネントを長方形のグリッドに配置します。セル