Comparator與Comparable的區(qū)別
2023-04-12
當(dāng)需要排序的集合或數(shù)組不是單純的數(shù)字類型的時(shí)候,通??梢允褂肅omparator或Comparable,以簡(jiǎn)單的方式實(shí)現(xiàn)對(duì)象排序或自定義排序。
Comparator和Comparable的區(qū)別如下:
Comparable用在對(duì)象本身,說明這個(gè)對(duì)象是可以被比較的,也就是說可以被排序的。(String和Integer之所以可以比較大小,是因?yàn)樗鼈兌紝?shí)現(xiàn)了Comparable接口,并實(shí)現(xiàn)了compareTo()方法)。
Comparator用在對(duì)象外面,相當(dāng)于定義了一套排序算法來排序。
下面通過具體的例子來理解Comparator和Comparable的區(qū)別:
Comparable
1. package
2.
3. import
4.
5. public class User implements
6.
7. private
8. private int
9.
10. public User(String id, int
11. this.id = id;
12. this.age = age;
13. }
14.
15. public int
16. return
17. }
18.
19. public void setAge(int
20. this.age = age;
21. }
22.
23. public
24. return
25. }
26.
27. public void
28. this.id = id;
29. }
30.
31. @Override
32. public int
33. return this.age - ((User) o).getAge();
34. }
35.
36. /**
37. * 測(cè)試方法
38. */
39. public static void
40. new User[] { new User("a", 30), new User("b", 20) };
41. Arrays.sort(users);
42. for (int i = 0; i < users.length; i++) {
43. User user = users[i];
44. " "
45. }
46. }
47. }
Comparator
1. package
2.
3. import
4. import
5.
6. public class MyComparator implements
7.
8. @Override
9. public int
10. return
11. }
12.
13. private int
14. String str = (String) o;
15. "一", "1");
16. "二", "2");
17. "三", "3");
18. return
19. }
20.
21. /**
22. * 測(cè)試方法
23. */
24. public static void
25. new String[] { "一", "三", "二"
26. new
27. for (int i = 0; i < array.length; i++) {
28. System.out.println(array[i]);
29. }
30. }
31. }
本文僅代表作者觀點(diǎn),版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請(qǐng)?jiān)谖闹凶⒚鱽碓醇白髡呙帧?/p>
免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)及時(shí)與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com





