Interfața Comparable este folosită pentru a compara un obiect din aceeași clasă cu o instanță a acelei clase, oferă ordonarea datelor pentru obiectele din clasa definită de utilizator. Clasa trebuie să implementeze java.lang.Comparabil interfață pentru a compara instanța sa, oferă metoda compareTo care preia un parametru al obiectului acelei clase. În acest articol, vom vedea cum putem sorta o serie de perechi de diferite tipuri de date pe diferiții parametri de comparație.
Utilizarea unei interfețe comparabile
- În această metodă, vom implementa interfața Comparable de la java.lang Pachet în clasa Pereche.
- Interfața Comparabil conține metoda compara cu pentru a decide ordinea elementelor.
- Ignorați compara cu metoda din clasa Pair.
- Creați o matrice de perechi și populați matricea.
- Folosește Arrays.sort () pentru a sorta matricea.
Exemplul 1
Având în vedere o matrice de Perechi formată din două câmpuri de tip șir și întreg. trebuie să sortați matricea în ordine lexicografică crescătoare și dacă două șiruri de caractere sunt același sortați pe baza valorii lor întregi.
Eșantion I/O:
servicii web java
Input: { {'abc', 3}, {'a', 4}, {'bc', 5}, {'a', 2} } Output: { {'a', 2}, {'a', 4}, {'abc', 3}, {'bc', 5} } Input: { {'efg', 1}, {'gfg', 1}, {'cba', 1}, {'zaa', 1} } Output: { {'cba', 1}, {'efg', 1}, {'gfg', 1}, {'zaa', 1} }> Java
import> java.io.*;> import> java.util.*;> class> Pair>implements> Comparable {> >String x;> >int> y;> >public> Pair(String x,>int> y)> >{> >this>.x = x;> >this>.y = y;> >}> >public> String toString()> >{> >return> '('> + x +>','> + y +>')'>;> >}> >@Override> public> int> compareTo(Pair a)> >{> >// if the string are not equal> >if> (>this>.x.compareTo(a.x) !=>0>) {> >return> this>.x.compareTo(a.x);> >}> >else> {> >// we compare int values> >// if the strings are equal> >return> this>.y - a.y;> >}> >}> }> public> class> GFG {> >public> static> void> main(String[] args)> >{> >int> n =>4>;> >Pair arr[] =>new> Pair[n];> >arr[>0>] =>new> Pair(>'abc'>,>3>);> >arr[>1>] =>new> Pair(>'a'>,>4>);> >arr[>2>] =>new> Pair(>'bc'>,>5>);> >arr[>3>] =>new> Pair(>'a'>,>2>);> >// Sorting the array> >Arrays.sort(arr);> >// printing the> >// Pair array> >print(arr);> >}> >public> static> void> print(Pair[] arr)> >{> >for> (>int> i =>0>; i System.out.println(arr[i]); } } }> |
>
>
Ieșire:
Before Sorting: (abc, 3); (a, 4); (bc, 5); (a, 2); After Sorting: (a,2) (a,4) (abc,3) (bc,5)>
Notă: dacă două șiruri sunt aceleași atunci comparația se face pe baza valorii.
Exemplul 2
Dată o matrice de Perechi formată din două șiruri de caractere cu nume și prenume. trebuie să sortați tabloul în ordinea lexicografică crescătoare a prenumelui și dacă două șiruri de caractere sunt aceleași, sortați în funcție de numele lor de familie.
Eșantion I/O:
Input: { {'raj', 'kashup'}, {'rahul', 'singh'}, {'reshmi', 'dubey'}, {'rahul', 'jetli'} } Output: { {'rahul', 'jetli'}, {'rahul', 'singh'}, {'raj', 'kashup'}, {'reshmi', 'dubey'} } Input: { {'abc', 'last'}, {'pklz', 'yelp'}, {'rpng', 'note'}, {'ppza', 'xyz'} } Output: { {'abc', 'last'}, {'pklz', 'yelp'}, {'ppza', 'xyz'}, {'rpng', 'note'} }> Java
import> java.io.*;> import> java.util.*;> class> Pair>implements> Comparable {> >String firstName;> >String lastName;> >public> Pair(String x, String y)> >{> >this>.firstName = x;> >this>.lastName = y;> >}> >public> String toString()> >{> >return> '( '> + firstName +>' , '> + lastName +>' )'>;> >}> >@Override> public> int> compareTo(Pair a)> >{> >// if the string are not equal> >if> (>this>.firstName.compareTo(a.firstName) !=>0>) {> >return> this>.firstName.compareTo(a.firstName);> >}> >else> {> >// we compare lastName if firstNames are equal> >return> this>.lastName.compareTo(a.lastName);> >}> >}> }> public> class> GFG {> >public> static> void> main(String[] args)> >{> >int> n =>4>;> >Pair arr[] =>new> Pair[n];> >arr[>0>] =>new> Pair(>'raj'>,>'kashup'>);> >arr[>1>] =>new> Pair(>'rahul'>,>'singh'>);> >arr[>2>] =>new> Pair(>'reshmi'>,>'dubey'>);> >arr[>3>] =>new> Pair(>'rahul'>,>'jetli'>);> >// Sorting the array> >Arrays.sort(arr);> >// printing the> >// Pair array> >print(arr);> >}> >public> static> void> print(Pair[] arr)> >{> >for> (>int> i =>0>; i System.out.println(arr[i]); } } }> |
alfabet ca numere
>
>
Ieșire:
Before Sorting: ( raj , kashup ) ( rahul , singh ) ( reshmi , dubey ) ( rahul , jetli ) After Sorting: ( rahul , jetli ) ( rahul , singh ) ( raj , kashup ) ( reshmi , dubey )>
În acest articol, am sortat perechile definite de utilizator cu diferite tipuri de date utilizând java comparabil .