Comparable vs Comparator in Java

ะšะปัŽั‡ะพะฒะฐ ั€ั–ะทะฝะธั†ั ะผั–ะถ Comparable ั– Comparator ะฒ Java

  • ะŸะพั€ั–ะฒะฝัะฝะธะน ะฒ Java โ€” ั†ะต ะพะฑโ€™ั”ะบั‚ ะดะปั ะฟะพั€ั–ะฒะฝัะฝะฝั ะท ั–ะฝัˆะธะผ ะพะฑโ€™ั”ะบั‚ะพะผ, ั‚ะพะดั– ัะบ Comparator โ€” ั†ะต ะพะฑโ€™ั”ะบั‚ ะดะปั ะฟะพั€ั–ะฒะฝัะฝะฝั ั€ั–ะทะฝะธั… ะพะฑโ€™ั”ะบั‚ั–ะฒ ั€ั–ะทะฝะธั… ะบะปะฐัั–ะฒ.
  • Comparable ะทะฐะฑะตะทะฟะตั‡ัƒั” compareTo() ะผะตั‚ะพะด ัะพั€ั‚ัƒะฒะฐะฝะฝั ะตะปะตะผะตะฝั‚ั–ะฒ Java, ั‚ะพะดั– ัะบ Comparator ะฝะฐะดะฐั” compare() ะผะตั‚ะพะด ัะพั€ั‚ัƒะฒะฐะฝะฝั ะตะปะตะผะตะฝั‚ั–ะฒ Java.
  • ะŸะพะดั–ะฑะฝะธะน ั–ะฝั‚ะตั€ั„ะตะนั ะฟั€ะธััƒั‚ะฝั–ะน ัƒ java.lang ะฟะฐะบะตั‚, ั‚ะพะดั– ัะบ ั–ะฝั‚ะตั€ั„ะตะนั Comparator ะฟั€ะธััƒั‚ะฝั–ะน ัƒ java.util ะฟะฐะบะตั‚.
  • Comparable ะทะฐะฑะตะทะฟะตั‡ัƒั” ะพะดะฝัƒ ะฟะพัะปั–ะดะพะฒะฝั–ัั‚ัŒ ัะพั€ั‚ัƒะฒะฐะฝะฝั, ะฐ Comparator โ€” ะบั–ะปัŒะบะฐ ะฟะพัะปั–ะดะพะฒะฝะพัั‚ะตะน ัะพั€ั‚ัƒะฒะฐะฝะฝั.
  • Comparable ะฒะฟะปะธะฒะฐั” ะฝะฐ ะฟะพั‡ะฐั‚ะบะพะฒะธะน ะบะปะฐั, ั‚ะพะดั– ัะบ Comparator ะฝะต ะฒะฟะปะธะฒะฐั” ะฝะฐ ะฒะธั…ั–ะดะฝะธะน ะบะปะฐั.

ะ ั–ะทะฝะธั†ั ะผั–ะถ Comparable ั– Comparator
ะ ั–ะทะฝะธั†ั ะผั–ะถ Comparable ั– Comparator

ะขัƒั‚ ั ะฟั€ะพะฐะฝะฐะปั–ะทัƒะฒะฐะฒ ั€ั–ะทะฝะธั†ัŽ ะผั–ะถ comparable ั– Comparator ั– ะฒัะตะฑั–ั‡ะฝะพ ะพั†ั–ะฝะธะฒ ั—ั…ะฝั– ะฟะปัŽัะธ ั‚ะฐ ะผั–ะฝัƒัะธ.

ะฉะพ ะฟะพั€ั–ะฒะฝัŽั”ั‚ัŒัั ะฒ Java?

ะŸะพั€ั–ะฒะฝัŽะฒะฐะฝะธะน in Java ั†ะต ะพะฑ'ั”ะบั‚, ัะบะธะน ะฟะพั€ั–ะฒะฝัŽั” ัะตะฑะต ะท ั–ะฝัˆะธะผ ะพะฑ'ั”ะบั‚ะพะผ. ะ”ะพะฟะพะผะฐะณะฐั” ัะพั€ั‚ัƒะฒะฐั‚ะธ ัะฟะธัะพะบ ะฟั€ะธะทะฝะฐั‡ะตะฝะธั… ะดะปั ะบะพั€ะธัั‚ัƒะฒะฐั‡ะฐ ะพะฑโ€™ั”ะบั‚ั–ะฒ. The Java.lang.ะŸะพั€ั–ะฒะฝัะปัŒะฝะธะน ั–ะฝั‚ะตั€ั„ะตะนั ะผะฐั” ะฑัƒั‚ะธ ั€ะตะฐะปั–ะทะพะฒะฐะฝะธะน ะบะปะฐัะพะผ, ั‰ะพะฑ ะฟะพั€ั–ะฒะฝัŽะฒะฐั‚ะธ ะนะพะณะพ ะตะบะทะตะผะฟะปัั€ะธ. ะœะฐัะธะฒ ะพะฑโ€™ั”ะบั‚ั–ะฒ, ั‰ะพ ั€ะตะฐะปั–ะทัƒัŽั‚ัŒ ะฟะพั€ั–ะฒะฝัะฝะฝะธะน ั–ะฝั‚ะตั€ั„ะตะนั, ัะพั€ั‚ัƒั”ั‚ัŒัั ะฐะฒั‚ะพะผะฐั‚ะธั‡ะฝะพ ะทะฐ Arrays.sort ั‚ะฐ Collections.sort ะผะตั‚ะพะดะธ

ะœะตั‚ะพะด, ะฒะธะบะพั€ะธัั‚ะฐะฝะธะน ัƒ Comparable

ะฏ ั…ะพั‚ั–ะฒ ะฑะธ ะฒะธะดั–ะปะธั‚ะธ ะฒะฐะถะปะธะฒะธะน ะผะตั‚ะพะด, ัะบะธะน ั ั‡ะฐัั‚ะพ ะฒะธะบะพั€ะธัั‚ะพะฒัƒัŽ ะฒ ั–ะฝั‚ะตั€ั„ะตะนัั– Comparable:

CompareTo():

ะœะตั‚ะพะด CompareTo() ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะดะปั ะฟั€ะธั€ะพะดะฝะพะณะพ ัะพั€ั‚ัƒะฒะฐะฝะฝั ั€ัะดะบะฐ. ะ—ะฝะฐั‡ะตะฝะฝั ะฟั€ะธั€ะพะดะฝะพะณะพ ัะพั€ั‚ัƒะฒะฐะฝะฝั โ€” ั†ะต ะฟะพั€ัะดะพะบ ัะพั€ั‚ัƒะฒะฐะฝะฝั, ัะบะธะน ะทะฐัั‚ะพัะพะฒัƒั”ั‚ัŒัั ะดะพ ะพะฑโ€™ั”ะบั‚ะฐ, ะฝะฐะฟั€ะธะบะปะฐะด, ั‡ะธัะปะพะฒะธะน ะฟะพั€ัะดะพะบ ะดะปั ัะพั€ั‚ัƒะฒะฐะฝะฝั ั†ั–ะปะธั… ั‡ะธัะตะป, ะฐะปั„ะฐะฒั–ั‚ะฝะธะน ะฟะพั€ัะดะพะบ ะดะปั String ั‚ะพั‰ะพ.

ะกะธะฝั‚ะฐะบัะธั CompareTo() ะผะตั‚ะพะด ั‚ะฐะบะธะน:

int compareTo(T obj)

ะฃ ะฝะฐะฒะตะดะตะฝะพะผัƒ ะฒะธั‰ะต ัะธะฝั‚ะฐะบัะธัั– T ะพะทะฝะฐั‡ะฐั” ั‚ะธะฟ ะพะฑโ€™ั”ะบั‚ั–ะฒ, ัะบั– ะฒะธ ะทะฑะธั€ะฐั”ั‚ะตัั ะฟะพั€ั–ะฒะฝัŽะฒะฐั‚ะธ.

CompareTo() ะผะตั‚ะพะด ะฟะพั€ั–ะฒะฝัŽั” ะพะฑ'ั”ะบั‚ ะท T obj.

ะฒะธั…ั–ะด:

  • ะ’ั–ะฝ ะฟะพะฒะตั€ั‚ะฐั” 0, ัะบั‰ะพ ะทะฝะฐั‡ะตะฝะฝั ั€ั–ะฒะฝั–.
  • ะฏะบั‰ะพ ะพะฑโ€™ั”ะบั‚ ะผะฐั” ะฝะธะถั‡ะต ะทะฝะฐั‡ะตะฝะฝั, ั‚ะพ ั†ะตะน ะผะตั‚ะพะด ะฟะพะฒะตั€ั‚ะฐั” ะฒั–ะดโ€™ั”ะผะฝะต ะทะฝะฐั‡ะตะฝะฝั.
  • ะฏะบั‰ะพ ะพะฑโ€™ั”ะบั‚ ะผะฐั” ะฑั–ะปัŒัˆะต ะทะฝะฐั‡ะตะฝะฝั, ะฒั–ะฝ ะฟะพะฒะตั€ั‚ะฐั” ะดะพะดะฐั‚ะฝะต ะทะฝะฐั‡ะตะฝะฝั.

ะŸั€ะธะบะปะฐะด ะฟะพั€ั–ะฒะฝัะฝะฝะพะณะพ ะฒ Java

ะะฐัั‚ัƒะฟะฝะฐ ะฟั€ะพะณั€ะฐะผะฐ Java ะฟะพั€ั–ะฒะฝัะปัŒะฝะธะน ะฟั€ะธะบะปะฐะด ะฟะพะบะฐะทัƒั” ะฟะพั€ั–ะฒะฝัะฝะฝั ะดะฒะพั… ัะธะผะฒะพะปั–ะฒ ยซaยป ั– ยซbยป. ะกะธะผะฒะพะป ยซะฐยป ัั‚ะพั—ั‚ัŒ ะฟะตั€ะตะด ยซะฑยป ะทะฐ ะฐะปั„ะฐะฒั–ั‚ะพะผ.

ะžั‚ะถะต, ะฒะธั…ั–ะด ะดะพั€ั–ะฒะฝัŽั” -1. ะกะธะผะฒะพะป ยซbยป ัั‚ะพั—ั‚ัŒ ะฟั–ัะปั ยซaยป ะทะฐ ะฐะปั„ะฐะฒั–ั‚ะพะผ. ะžั‚ะถะต, ั€ะตะทัƒะปัŒั‚ะฐั‚ะพะผ ะฑัƒะดะต 1. ะกะธะผะฒะพะปะธ ยซaยป ั– ยซbยป ั” ะตะบะฒั–ะฒะฐะปะตะฝั‚ะฝะธะผะธ. ะžั‚ะถะต, ะฒะธั…ั–ะด ะดะพั€ั–ะฒะฝัŽั” 0.

public class Sample_String {
    public static void main(String[] args) {
        String str_Sample = "a";
        System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));
        str_Sample = "b";
        System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));
        str_Sample = "b";
        System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));
    }
}

ะ’ะธั…ั–ะด

Compare To 'a' b is : -1
Compare To 'b' a is : 1
Compare To 'b' b is : 0

ะฉะพ ั‚ะฐะบะต ะบะพะผะฟะฐั€ะฐั‚ะพั€ ะฒ Java?

ะšะพะผะฟะฐั€ะฐั‚ะพั€ in Java ั” ะพะฑ'ั”ะบั‚ะพะผ ะดะปั ะฟะพั€ั–ะฒะฝัะฝะฝั ั€ั–ะทะฝะธั… ะพะฑ'ั”ะบั‚ั–ะฒ ั€ั–ะทะฝะธั… ะบะปะฐัั–ะฒ. ะ†ะฝั‚ะตั€ั„ะตะนั ะบะพะผะฟะฐั€ะฐั‚ะพั€ะฐ ะฒ Java ั‚ะฐะบะพะถ ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะดะปั ะฒะฟะพั€ัะดะบัƒะฒะฐะฝะฝั ะพะฑ'ั”ะบั‚ั–ะฒ ะฒะธะทะฝะฐั‡ะตะฝะธั… ะบะพั€ะธัั‚ัƒะฒะฐั‡ะตะผ ะบะปะฐัั–ะฒ. ะ’ั–ะฝ ะฒะบะปัŽั‡ะฐั” ะดะฒะฐ ะฒะฐะถะปะธะฒั– ะผะตั‚ะพะดะธ ั–ะฝั‚ะตั€ั„ะตะนััƒ ะบะพะผะฟะฐั€ะฐั‚ะพั€ะฐ, ะฒั–ะดะพะผั– ัะบ ะฟะพั€ั–ะฒะฝัะฝะฝั (Object obj1, Object obj2) ั– ะดะพั€ั–ะฒะฝัŽั” (Object element).

ะœะตั‚ะพะด, ะฒะธะบะพั€ะธัั‚ะฐะฝะธะน ัƒ Comparator

ะฃ ัะฒะพั—ะน ะฟั€ะฐะบั‚ะธั†ั– ั ั‡ะฐัั‚ะพ ะฟะพะบะปะฐะดะฐัŽัั ะฝะฐ ะฝะฐัั‚ัƒะฟะฝั– ะบั€ะธั‚ะธั‡ะฝั– ะผะตั‚ะพะดะธ ั–ะฝั‚ะตั€ั„ะตะนััƒ ะบะพะผะฟะฐั€ะฐั‚ะพั€ะฐ:

ะŸะพั€ั–ะฒะฝัั‚ะธ():

Compare() ะดะพะทะฒะพะปัั” ะทะฐะผะพะฒะปัั‚ะธ ะพะฑ'ั”ะบั‚ะธ. ะ”ะปั ั†ัŒะพะณะพ ะฒะฐะผ ะฟะพั‚ั€ั–ะฑะฝะพ ัั‚ะฒะพั€ะธั‚ะธ ะบะปะฐั, ัะบะธะน ั€ะตะฐะปั–ะทัƒั” ั–ะฝั‚ะตั€ั„ะตะนั ะบะพะผะฟะฐั€ะฐั‚ะพั€ะฐ. ะŸั–ัะปั ั†ัŒะพะณะพ ะฒะฐะผ ะฟะพั‚ั€ั–ะฑะฝะพ ะฟะตั€ะตะฒะธะทะฝะฐั‡ะธั‚ะธ ะนะพะณะพ ะผะตั‚ะพะด ะฟะพั€ั–ะฒะฝัะฝะฝั.

ะกะธะฝั‚ะฐะบัะธั compare() ะผะตั‚ะพะด ั‚ะฐะบะธะน:

compare(Object obj1, Object obj2)

ะฃ ะฝะฐะฒะตะดะตะฝะพะผัƒ ะฒะธั‰ะต ัะธะฝั‚ะฐะบัะธัั– obj1 ั– obj2 โ€” ั†ะต ะดะฒะฐ ะพะฑโ€™ั”ะบั‚ะธ, ัะบั– ะฟะพั‚ั€ั–ะฑะฝะพ ะฟะพั€ั–ะฒะฝัั‚ะธ ะทะฐ ะดะพะฟะพะผะพะณะพัŽ ะผะตั‚ะพะดัƒ compare(). compare() ะผะตั‚ะพะด.

ะฒะธั…ั–ะด:

  • ะ’ั–ะฝ ะฟะพะฒะตั€ั‚ะฐั” ะฒั–ะดโ€™ั”ะผะฝะต ั†ั–ะปะต ั‡ะธัะปะพ, ัะบั‰ะพ ะฟะตั€ัˆะธะน ะฐั€ะณัƒะผะตะฝั‚ ะผะตะฝัˆะธะน ะทะฐ ะดั€ัƒะณะธะน.
  • ะŸะพะฒะตั€ั‚ะฐั” ะฝัƒะปัŒ, ัะบั‰ะพ ะฟะตั€ัˆะธะน ั– ะดั€ัƒะณะธะน ะฐั€ะณัƒะผะตะฝั‚ะธ ั€ั–ะฒะฝั–.
  • ะฆะตะน ะผะตั‚ะพะด ะผะพะถะต ะฟะพะฒะตั€ะฝัƒั‚ะธ ะดะพะดะฐั‚ะฝะต ั†ั–ะปะต ั‡ะธัะปะพ, ัะบั‰ะพ ะฟะตั€ัˆะธะน ะฐั€ะณัƒะผะตะฝั‚ ะฑั–ะปัŒัˆะธะน ะทะฐ ะดั€ัƒะณะธะน.

ะ’ะธ ะฟะพะฒะธะฝะฝั– ะฟะตั€ะตะบะพะฝะฐั‚ะธัั, ั‰ะพ ะฒั–ะดะฝะพัˆะตะฝะฝั ั” ั‚ั€ะฐะฝะทะธั‚ะธะฒะฝะธะผ. ะะฐะฟั€ะธะบะปะฐะด, ((ะฟะพั€ั–ะฒะฝัะนั‚ะต(a, b)>0) && (ะฟะพั€ั–ะฒะฝัะนั‚ะต(b, c)>0)), ั‰ะพ ะฟะตั€ะตะดะฑะฐั‡ะฐั” ะฟะพั€ั–ะฒะฝัะฝะฝั(a, c)>0.

ะŸั€ะธะบะปะฐะด ะฟะพั€ั–ะฒะฝัะฝะฝะพะณะพ ะฒ Java

ะะธะถั‡ะต Java ะฟั€ะธะบะปะฐะด ะบะพะผะฟะฐั€ะฐั‚ะพั€ะฐ, ั—ั… 6 ะทะผั–ะฝะฝั–. ยซxยป, ยซyยป, ยซpยป, ยซqยป, ยซrยป ั– ยซsยป. ะ’ะธั…ั–ะด ะดะพั€ั–ะฒะฝัŽั” -1 ัะบ ะทะฝะฐั‡ะตะฝะฝั โ€œxโ€, 20 ะผะตะฝัˆะต ะทะฝะฐั‡ะตะฝะฝั โ€œyโ€, 30. ะ’ะธั…ั–ะด ะดะพั€ั–ะฒะฝัŽั” 0, ะพัะบั–ะปัŒะบะธ ะทะฝะฐั‡ะตะฝะฝั โ€œpโ€, 40 ะดะพั€ั–ะฒะฝัŽั” ะทะฝะฐั‡ะตะฝะฝัŽ โ€œqโ€, 40 .

import java.lang.Integer; 
public class example { 
    public static void main(String args[]) 
    { 
        int x = 20; 
        int y = 30; 
        // as 10 less than 20, 
        // Output will be a value less than zero 
        System.out.println(Integer.compare(x, y)); 
        int p = 40; 
        int q = 40; 
        // as 30 equals 30, 
        // Output will be zero 
        System.out.println(Integer.compare(p, q)); 
        int r = 20; 
        int s = 7; 
        // as 15 is greater than 8, 
        // Output will be a value greater than zero 
        System.out.println(Integer.compare(r, s)); 
    } 
}

ะฒะธั…ั–ะด:

-1
0
1

ะ”ะพั€ั–ะฒะฝัŽั”():

Equals() ะฟะตั€ะตะฒั–ั€ัั”, ั‡ะธ ะดะพั€ั–ะฒะฝัŽั” ั‡ะธัะตะปัŒะฝะธะน ะพะฑ'ั”ะบั‚ ะพะฑ'ั”ะบั‚ัƒ, ัะบะธะน ะฟะตั€ะตะดะฐั”ั‚ัŒัั ัะบ ะฐั€ะณัƒะผะตะฝั‚, ั‡ะธ ะฝั–.

ะกะธะฝั‚ะฐะบัะธั equals() ะผะตั‚ะพะด ั‚ะฐะบะธะน:

public boolean equals(Object o)

ะฆะตะน ะผะตั‚ะพะด ะฟั€ะธะนะผะฐั” ะดะฒะฐ ะฟะฐั€ะฐะผะตั‚ั€ะธ: 1) ะฑัƒะดัŒ-ัะบะธะน ะพะฑโ€™ั”ะบั‚ ั– 2) ะทะฝะฐั‡ะตะฝะฝั, ั‰ะพ ะฟะพะฒะตั€ั‚ะฐั”ั‚ัŒัั. ะ’ั–ะฝ ะฟะพะฒะตั€ั‚ะฐั” ั–ัั‚ะธะฝัƒ, ัะบั‰ะพ ะฟะตั€ะตะดะฐะฝะธะน ะฐั€ะณัƒะผะตะฝั‚ ะฝะต ั” ะฝัƒะปัŒะพะฒะธะผ ั– ั” ะพะฑโ€™ั”ะบั‚ะพะผ ะฟะพะดั–ะฑะฝะพะณะพ ั‚ะธะฟัƒ ะท ั‚ะฐะบะธะผ ัะฐะผะธะผ ั‡ะธัะปะพะฒะธะผ ะทะฝะฐั‡ะตะฝะฝัะผ.

ะŸั€ะธะบะปะฐะด ะผะตั‚ะพะดัƒ Equals:

ะฃ ะฝะฐะฒะตะดะตะฝะพะผัƒ ะฝะธะถั‡ะต ะฟั€ะธะบะปะฐะดั– ั ะฑัƒะดัƒ ะฟะพั€ั–ะฒะฝัŽะฒะฐั‚ะธ ั‡ะพั‚ะธั€ะธ ะทะผั–ะฝะฝั– ะพะดะฝะฐ ะท ะพะดะฝะพัŽ. ะขั€ะธ ะทะผั–ะฝะฝั– ะผะฐัŽั‚ัŒ ั‚ะธะฟ integer, ะฐ ะพะดะฝะฐ โ€” ั‚ะธะฟ short. ะŸะตั€ัˆะธะน ั€ะตะทัƒะปัŒั‚ะฐั‚ ั” ั…ะธะฑะฝะธะผ, ะพัะบั–ะปัŒะบะธ ะทะฝะฐั‡ะตะฝะฝั p, ัะบะต ะดะพั€ั–ะฒะฝัŽั” 5, ะฝะต ะดะพั€ั–ะฒะฝัŽั” ะทะฝะฐั‡ะตะฝะฝัŽ q, ัะบะต ะดะพั€ั–ะฒะฝัŽั” 20.

ะ”ั€ัƒะณะธะน ั€ะตะทัƒะปัŒั‚ะฐั‚ ั” ั–ัั‚ะธะฝะฝะธะผ, ั‚ะพะผัƒ ั‰ะพ ะทะฝะฐั‡ะตะฝะฝั ะทะผั–ะฝะฝะธั… p ั– r ะพะดะฝะฐะบะพะฒั–, ั‚ะพะฑั‚ะพ 5. ะะฐั€ะตัˆั‚ั–, ั€ะตะทัƒะปัŒั‚ะฐั‚ ั” ั…ะธะฑะฝะธะผ, ะพัะบั–ะปัŒะบะธ ะทะผั–ะฝะฝั– p ั– s ะผะฐัŽั‚ัŒ ั€ั–ะทะฝั– ะฟั€ะธัะฒะพั”ะฝั– ะทะฝะฐั‡ะตะฝะฝั.

public class Test { 
   public static void main(String args[]) {
      Integer p = 5;
      Integer q = 20;
      Integer r =5;
      Short s = 5;
      System.out.println(p.equals(q));  
      System.out.println(p.equals(r)); 
      System.out.println(p.equals(s));
   }
}

ะ’ะธั…ั–ะด

false
true
false

ะ’ั–ะดะผั–ะฝะฝะพัั‚ั– ะผั–ะถ Comparable ั– Comparator ะฒ Java

ะฏ ั‡ะฐัั‚ะพ ะฑะฐั‡ัƒ ะฟะปัƒั‚ะฐะฝะธะฝัƒ ะผั–ะถ Java Comparable ั– Comparator; ะพััŒ ะณะพะปะพะฒะฝะฐ ะฒั–ะดะผั–ะฝะฝั–ัั‚ัŒ:

ะ ั–ะทะฝะธั†ั ะผั–ะถ Comparable ั– Comparator ะฒ Java
ะ ั–ะทะฝะธั†ั ะผั–ะถ Comparable ั– Comparator ะฒ Java

ะžัะฝะพะฒะฐ ะฟะพั€ั–ะฒะฝัะฝะฝั ะŸะพั€ั–ะฒะฝัŽะฒะฐะฝะธะน ะบะพะผะฟะฐั€ะฐั‚ะพั€
ะœะตั‚ะพะด ะŸะพั€ั–ะฒะฝัะฝะฝั– ะทะฐะฑะตะทะฟะตั‡ัƒัŽั‚ัŒ compareTo() ะผะตั‚ะพะด ัะพั€ั‚ัƒะฒะฐะฝะฝั ะตะปะตะผะตะฝั‚ั–ะฒ Java. ะšะพะผะฟะฐั€ะฐั‚ะพั€ ะทะฐะฑะตะทะฟะตั‡ัƒั” compare() ะผะตั‚ะพะด ัะพั€ั‚ัƒะฒะฐะฝะฝั ะตะปะตะผะตะฝั‚ั–ะฒ Java.
ะฟะฐะบะตั‚ ะŸะพะดั–ะฑะฝะธะน ั–ะฝั‚ะตั€ั„ะตะนั ะฟั€ะธััƒั‚ะฝั–ะน ัƒ java.lang ะฟะฐะบะตั‚. ะ†ะฝั‚ะตั€ั„ะตะนั ะบะพะผะฟะฐั€ะฐั‚ะพั€ะฐ ะฟั€ะธััƒั‚ะฝั–ะน ัƒ java.util ะฟะฐะบะตั‚.
ะ›ะพะณั–ะบะฐ ัะพั€ั‚ัƒะฒะฐะฝะฝั ะ›ะพะณั–ะบะฐ ัะพั€ั‚ัƒะฒะฐะฝะฝั ะผะฐั” ะฑัƒั‚ะธ ะฒ ั‚ะพะผัƒ ะถ ะบะปะฐัั–, ั‰ะพ ะน ะพะฑโ€™ั”ะบั‚, ัะบะธะน ะฒะธ ะทะฑะธั€ะฐั”ั‚ะตัั ัะพั€ั‚ัƒะฒะฐั‚ะธ. ะ›ะพะณั–ะบะฐ ัะพั€ั‚ัƒะฒะฐะฝะฝั ะฟะพะฒะธะฝะฝะฐ ะฑัƒั‚ะธ ะฒ ะพะบั€ะตะผะธั… ะบะปะฐัะฐั… ะดะปั ะทะฐะฟะธััƒ ั€ั–ะทะฝะธั… ัะพั€ั‚ัƒะฒะฐะฝัŒ ะฝะฐ ะพัะฝะพะฒั– ั€ั–ะทะฝะธั… ะฐั‚ั€ะธะฑัƒั‚ั–ะฒ ะพะฑ'ั”ะบั‚ั–ะฒ.
ะžะฑ'ั”ะบั‚ ะบะปะฐััƒ ะšะปะฐั, ะพะฑ'ั”ะบั‚ะธ ัะบะพะณะพ ะฒะธ ั…ะพั‡ะตั‚ะต ะฒั–ะดัะพั€ั‚ัƒะฒะฐั‚ะธ, ะฟะพะฒะธะฝะตะฝ ั€ะตะฐะปั–ะทะพะฒัƒะฒะฐั‚ะธ ั–ะฝั‚ะตั€ั„ะตะนั Comparable. ะšะปะฐั, ะพะฑโ€™ั”ะบั‚ะธ ัะบะพะณะพ ะฒะธ ั…ะพั‡ะตั‚ะต ะฒั–ะดัะพั€ั‚ัƒะฒะฐั‚ะธ, ะฝะต ะฟะพั‚ั€ะตะฑัƒั” ั€ะตะฐะปั–ะทะฐั†ั–ั— ั–ะฝั‚ะตั€ั„ะตะนััƒ ะฟะพั€ั–ะฒะฝัะฝะฝั.
ะŸะพัะปั–ะดะพะฒะฝะพัั‚ั– ัะพั€ั‚ัƒะฒะฐะฝะฝั ะ’ั–ะฝ ะทะฐะฑะตะทะฟะตั‡ัƒั” ะพะดะฝัƒ ะฟะพัะปั–ะดะพะฒะฝั–ัั‚ัŒ ัะพั€ั‚ัƒะฒะฐะฝะฝั. ะ’ั–ะฝ ะทะฐะฑะตะทะฟะตั‡ัƒั” ะบั–ะปัŒะบะฐ ะฟะพัะปั–ะดะพะฒะฝะพัั‚ะตะน ัะพั€ั‚ัƒะฒะฐะฝะฝั.
ะŸะพั€ัะดะพะบ ัะพั€ั‚ัƒะฒะฐะฝะฝั ะฆะตะน ะผะตั‚ะพะด ะผะพะถะต ัะพั€ั‚ัƒะฒะฐั‚ะธ ะดะฐะฝั– ะฒั–ะดะฟะพะฒั–ะดะฝะพ ะดะพ ะฟั€ะธั€ะพะดะฝะพะณะพ ะฟะพั€ัะดะบัƒ ัะพั€ั‚ัƒะฒะฐะฝะฝั. ะฆะตะน ะผะตั‚ะพะด ัะพั€ั‚ัƒั” ะดะฐะฝั– ะฒั–ะดะฟะพะฒั–ะดะฝะพ ะดะพ ะฝะฐะปะฐัˆั‚ะพะฒะฐะฝะพะณะพ ะฟะพั€ัะดะบัƒ ัะพั€ั‚ัƒะฒะฐะฝะฝั.
ะšะปะฐั ะฆะต ะฒะฟะปะธะฒะฐั” ะฝะฐ ะฟะพั‡ะฐั‚ะบะพะฒะธะน ะบะปะฐั. ั‚ะพะฑั‚ะพ ั„ะฐะบั‚ะธั‡ะฝะธะน ะบะปะฐั ะทะผั–ะฝัŽั”ั‚ัŒัั. ะฆะต ะฝะต ะฒะฟะปะธะฒะฐั” ะฝะฐ ะฒะธั…ั–ะดะฝะธะน ะบะปะฐั, ั‚ะพะฑั‚ะพ ั„ะฐะบั‚ะธั‡ะฝะธะน ะบะปะฐั ะฝะต ะทะผั–ะฝัŽั”ั‚ัŒัั.
ะ’ะธะบะพั€ะธัั‚ะฐะฝะฝั ะงะฐัั‚ะพ ั€ะตะฐะปั–ะทัƒั”ั‚ัŒัั ะฒ API ะบะฐะปะตะฝะดะฐั€ะตะผ, ะบะปะฐัะฐะผะธ ะพะฑะพะปะพะฝะบะธ, ะดะฐั‚ะพัŽ ั‚ะฐ
ะ ัะดะพะบ.
ะ’ั–ะฝ ั€ะตะฐะปั–ะทะพะฒะฐะฝะธะน ะดะปั ัะพั€ั‚ัƒะฒะฐะฝะฝั ะตะบะทะตะผะฟะปัั€ั–ะฒ ัั‚ะพั€ะพะฝะฝั–ั… ะบะปะฐัั–ะฒ.
ะ—ะดั–ะนัะฝัŽะฒะฐั‚ะธ ะฃัั– ะบะปะฐัะธ-ะพะณะพั€ั‚ะบะธ ั‚ะฐ ะบะปะฐัะธ ั€ัะดะบั–ะฒ ั€ะตะฐะปั–ะทัƒัŽั‚ัŒ ะฟะพั€ั–ะฒะฝัะปัŒะฝั– ั–ะฝั‚ะตั€ั„ะตะนัะธ. ะ„ะดะธะฝะธะผะธ ั€ะตะฐะปั–ะทะพะฒะฐะฝะธะผะธ ะบะปะฐัะฐะผะธ Comparator ั” Collator ั– RuleBasedColator.

ะะฐะนะบั€ะฐั‰ั– ะฟั€ะฐะบั‚ะธะบะธ ะฟั–ะด ั‡ะฐั ะฒะธะบะพั€ะธัั‚ะฐะฝะฝั Comparator ั– Comparable ะฒ Java

  • ะ’ะธะบะพั€ะธัั‚ะพะฒัƒะนั‚ะต ะฟะพั€ั–ะฒะฝัะปัŒะฝะธะน ั–ะฝั‚ะตั€ั„ะตะนั, ัะบั‰ะพ ะฟะพั€ั–ะฒะฝัะฝะฝั ั” ัั‚ะฐะฝะดะฐั€ั‚ะฝะธะผ ะดะปั ะบะพะฝะบั€ะตั‚ะฝะพะณะพ ะบะปะฐััƒ.
  • ะ’ะธ ะผะพะถะตั‚ะต ะฒะธะบะพั€ะธัั‚ะพะฒัƒะฒะฐั‚ะธ ะปัะผะฑะดะฐ-ะฒะธั€ะฐะทะธ ะท ะบะพะผะฟะฐั€ะฐั‚ะพั€ะพะผ.
  • ะ‘ะฐะณะฐั‚ะพ ะท ะดะพัั‚ัƒะฟะฝะธั… ะพัะฝะพะฒะฝะธั… ะบะปะฐัั–ะฒ ั€ะตะฐะปั–ะทัƒัŽั‚ัŒ ะฟะพั€ั–ะฒะฝัะฝะฝะธะน ั–ะฝั‚ะตั€ั„ะตะนั.
  • ะœะพะถะฝะฐ ะฒะธะบะพั€ะธัั‚ะพะฒัƒะฒะฐั‚ะธ TreeSet ั– TreeMap ะฟั–ะด ั‡ะฐั ัะพั€ั‚ัƒะฒะฐะฝะฝั Set ะฐะฑะพ Map.
  • ะšะพะผะฐะฝะดะฐ compareTo() ะผะตั‚ะพะด ะฟั€ะฐั†ัŽั” ัะบ ะท ะบะพะผะฟะฐั€ะฐั‚ะพั€ะพะผ, ั‚ะฐะบ ั– ะท ะบะพะผะฟะฐั€ะฐั‚ะพั€ะพะผ.
  • ะ’ะธะบะพั€ะธัั‚ะพะฒัƒะนั‚ะต ั–ะฝั‚ะตั€ั„ะตะนั ะบะพะผะฟะฐั€ะฐั‚ะพั€ะฐ ะปะธัˆะต ั‚ะพะดั–, ะบะพะปะธ ะฒะฐะผ < ะฟะพั‚ั€ั–ะฑะฝะฐ ะฑั–ะปัŒัˆะฐ ะณะฝัƒั‡ะบั–ัั‚ัŒ.
  • ะšะพะผะฐะฝะดะฐ compareTo() ะผะตั‚ะพะด ะฟะพะฒะตั€ะฝะต ะดะพะดะฐั‚ะฝะต ั†ั–ะปะต ั‡ะธัะปะพ, ัะบั‰ะพ ะฟะตั€ัˆะธะน ะพะฑโ€™ั”ะบั‚ ะฑั–ะปัŒัˆะธะน ะทะฐ ั–ะฝัˆะธะน, ะฒั–ะดโ€™ั”ะผะฝะต, ัะบั‰ะพ ะฒั–ะฝ ะฝะธะถั‡ะธะน, ั– ะฝัƒะปัŒ, ัะบั‰ะพ ะพะฑะธะดะฒะฐ ะพะดะฝะฐะบะพะฒั–.

ะฏะบ ะฒะธะฑั€ะฐั‚ะธ ะผั–ะถ ะฟะพั€ั–ะฒะฝัŽะฒะฐะฝะธะผ ั– ะฟะพั€ั–ะฒะฝัŽะฒะฐะฝะธะผ

ะ—ั€ะตัˆั‚ะพัŽ, ะผั–ะน ะฟั€ะฐะบั‚ะธั‡ะฝะธะน ะดะพัะฒั–ะด ะฟะพะบะฐะทัƒั”, ั‰ะพ ะฒะธะบะพั€ะธัั‚ะฐะฝะฝั Comparable ั– Comparator ัƒ Java ะทะฝะฐั‡ะฝะพ ะฟะพะบั€ะฐั‰ัƒั” ะบะพะฝั‚ั€ะพะปัŒ ะฝะฐะด ัะพั€ั‚ัƒะฒะฐะฝะฝัะผ ะดะฐะฝะธั…, ะฟั–ะดะฒะธั‰ัƒัŽั‡ะธ ะฟั€ะพะดัƒะบั‚ะธะฒะฝั–ัั‚ัŒ ั– ั„ัƒะฝะบั†ั–ะพะฝะฐะปัŒะฝั–ัั‚ัŒ.

ะŸั–ะดััƒะผัƒะนั‚ะต ั†ะตะน ะฟะพัั‚ ะทะฐ ะดะพะฟะพะผะพะณะพัŽ: