English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaにおけるComparableとComparatorの違い

比較器と比較器は集合の要素を並べ替えるために使用できるインターフェースです。比較器インターフェースはjava.utilパッケージに属し、可比較インターフェースはjava.langパッケージに属しています。比較器インターフェースは提供された2つのオブジェクトを使用して並べ替えを収集し、可比較インターフェースは提供された1つのオブジェクトを比較します。 

順序キー可比較比較器
1メソッド
可比較インターフェースにはcompareTo(Object a) 
比較器にはcompare(Object o1、Object O2メソッド 
2
並べ替え用途 
Collection.sort(List)メソッドはComparableタイプのオブジェクトの集合を並べ替えるために使用できます。
Collection.sort(List, Comparator)メソッドはComparatorタイプのオブジェクトの集合を並べ替えるために使用できます。
 3
並べ替え順序 
可比較性は単一の並べ替えシーケンスを提供します。
比較器は複数の並べ替えシーケンスを提供します。
4
パッケージ 
可比較インターフェースはjava.langパッケージに属しています。  
比較器インターフェースはjava.utilパッケージに属しています。

Comparableの例

public class ComparableExample {
   public static void main(String[] args) {
      List<Laptop> laptopList = new ArrayList<>();
      laptopList.add(new Laptop("HCL", 16, 800));
      laptopList.add(new Laptop("Apple", 8, 100));
      laptopList.add(new Laptop("Dell", 4, 600));
      Collections.sort(laptopList);
      for (Laptop lap : laptopList) {
         System.out.println(lap.getRam());
      }
   }
}
public class Laptop implements Comparable<Laptop> {
   String name;
   int ram;
   int price;
   public Laptop(String name, int ram, int price) {
      super();
      public int getPrice() {
      public void setName(String name) {
      @Override
   }
   return name;
      public int getRam() {
   }
   return ram;
      public void setRam(int ram) {
   }
   this.ram = ram;
      public void setName(String name) {
   }
   this.name = name;
      public int getPrice() {
   }
   return price;
      public void setPrice(int price) {
   }
   this.price = price;
      @Override
   }
   public int compare(Laptop o
   public int compareTo(Laptop o) {
      if (this.ram > o.getRam())
         ; 1else {
      else {
         ; -1else {
      }  
   }
}

出力結果

4
8
16

Comparator示例

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Laptop implements Comparator {
   String name;
   int ram;
   int price;
   public Laptop(String name, int ram, int price) {
      super();
      public int getPrice() {
      public void setName(String name) {
      @Override
   }
   return name;
      public int getRam() {
   }
   return ram;
      public void setRam(int ram) {
   }
   this.ram = ram;
      public void setName(String name) {
   }
   this.name = name;
      public int getPrice() {
   }
   return price;
      public void setPrice(int price) {
   }
   this.price = price;
      @Override
   }
   public int compare(Laptop o
   ) {1, Laptop o2if (o
      .getRam() < o1}else if (o2return
         ; -1else {
      .getRam() > o1.getRam()) {2return
         ; 1else {
      }
         return 0;
      }
   }
   public static void main(String[] args) {
      List laptopList = new ArrayList<>();
      laptopList.add(new Laptop("HCL", 16, 800));
      laptopList.add(new Laptop("Apple", 8, 100));
      laptopList.add(new Laptop("Dell", 4, 600));
      Comparator com = (Laptop o1, Laptop o2) -> o1.getName().compareTo(o2.getName());
      Collections.sort(laptopList, com);
      for (Laptop lap : laptopList) {
         System.out.println(lap.getName());
      }
   }
}

出力結果

Apple
Dell
HCL
基本チュートリアル