Comparable Comparator
Comparable? java.lang ??? ??? ??? ????? ?? ??????. Comparable? ???? ???? ??? ??? ? ????. ?? ??? ?? ?? ???? CompareTo? ??? ?? ?????.
compare ?? ?? -1, 0, 1???. ???? ?? ???? ?? 1? ????, ??? 0?, ?? ???? ??? -1? ?????.
Collections.sort
? Arrays.sort
? Comparable? ???? ??? ???? ??? ? ????. Collections.sort
和 Arrays.sort
可以自動對實現(xiàn) Comparable 的對象進行排序。
免費在線學(xué)習(xí)視頻推薦:java學(xué)習(xí)
示例如下,我們構(gòu)建一個 node 對象,并通過 node 對象之間的比較驗證 Comparable 的用法。
node 對象的實現(xiàn)如下:
public class Node implements Comparable<Object>{ private int num; private String name; @Override public String toString() { return "num=" + num + " name=" + name; } public Node(int num, String name) { super(); this.num = num; this.name = name; } public Node() { super(); } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int compareTo(Object o) { Node node = (Node)o; return this.num - node.getNum(); } }
可以看到,我們?yōu)?Node 實現(xiàn)了 Comparable 接口,并且重寫了 compareTo 方法。
先測試一下,我們創(chuàng)建10個 Node 對象并添加進 List 中,然后把順序打亂。
public class MyTest { public static void main(String[] args) { List<Node> list = new ArrayList<Node>(); for(int i = 0;i < 10;i++) { list.add(new Node(i,"node")); } //打亂順序 Collections.shuffle(list); for (Node node : list) { System.out.println(node); } } }
顯示結(jié)果如下:
num=7 name=node num=0 name=node num=5 name=node num=9 name=node num=6 name=node num=3 name=node num=4 name=node num=8 name=node num=1 name=node num=2 name=node
現(xiàn)在輸出是亂序的,接下來我們使用 Collections.sort 對其進行排序。
public class MyTest { public static void main(String[] args) { List<Node> list = new ArrayList<Node>(); for(int i = 0;i < 10;i++) { list.add(new Node(i,"node")); } //打亂順序 Collections.shuffle(list); Collections.sort(list); for (Node node : list) { System.out.println(node); } } }
Collections.sort 其實是按 compareTo 方法中的定義進行比較,我們之前定義了按照 num 的升序進行排序,現(xiàn)在排序結(jié)果如下:
num=0 name=node num=1 name=node num=2 name=node num=3 name=node num=4 name=node num=5 name=node num=6 name=node num=7 name=node num=8 name=node num=9 name=node
Comparator比較器
Comparator
位于 java.util
# ????#
??? ??? ????. ?? ??? ???? ?? ?? ?? ??? ?? Comparable? ???? ?????. ?? ??? ??? ??? ????:Collections.sort(List<T> list, Comparator<? super T> c); Arrays.sort(T[] a, Comparator<? super T> c);????? ??? Node? ?? Comparable ?????? ???? CompareTo ???? ???????.
?? ????? ?? 10?? Node ??? ???? ?? ??? ??? ?? ??? ????.
public class Node{ private int num; private String name; @Override public String toString() { return "num=" + num + " name=" + name; } public Node(int num, String name) { super(); this.num = num; this.name = name; } public Node() { super(); } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
??? ??? ?? ?????.
public class MyTest { public static void main(String[] args) { List<Node> list = new ArrayList<Node>(); for(int i = 0;i < 10;i++) { list.add(new Node(i,"node")); } //打亂順序 Collections.shuffle(list); Collections.sort(list, new Comparator<Node>() { @Override public int compare(Node o1, Node o2) { return o2.getNum()-o1.getNum(); } }); for (Node node : list) { System.out.println(node); } } }?? ??? ???????. ???? Collections.sort? ???? ?????.
num=9 name=node num=8 name=node num=7 name=node num=6 name=node num=5 name=node num=4 name=node num=3 name=node num=2 name=node num=1 name=node num=0 name=nodeCollections.sort? ??? CompareTo ???? ??? ?? ?????. ??? num? ?????? ??? ??????. ?? ?? ??? ??? ????.
rrreee#???? ##?? ??#Comparator
?? ??? ????? ?? ???? ???? ???? ???. ?? ?? ??? ???? ???? Comparator ????? ??? ? ??? ??? ? ????. #????#rrreee#????#?? Node ??? ???? ? ?? Comparable? ???? ????. #????#rrreee#????#??? ???? ???? ???? ??? ????? ???. #????#rrreee#????#??? ??? ????. #????##????#rrreee#????#Comparator? ?? ??? ?????. #????##????##????#Summary#????##????##????#Comparable? ?? ?????, Comparator? ?? ??????. ???? Comparable ?????? ???? ??? ???? ?? ?????. ????? Comparator ??? ??? ? ? ????. ?? ???? ?? Comparable ????? ??? ??? Comparator? ???? ? ???. ???? ?? ????? ???? ? ? Comparable? ?? ???? ???? ?? ?????. #????##????#? ??? #????#java?? ??#????# ???? ??? ????. ??? ?? ???? ?? ? ????. #????#? ??? Java?? Comparator? Comparator? ???? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

??? ??











PHP ??? ???? ??? ??? ??? ????? ????. ??? ????? ?? ???? ??? "?? ? ?"??? "?"? ???????. 1. ??? ? ??? ??? DocBlock (/*/)? ?? ?? ??? ???? ??? ? ?? ???? ??????. 2. JS ??? ???? ?? ???? ??? ?? ??? ??? ?????. 3. ??? ?? ?? ?? ??? ???? ????? ????? ???? ?? ????? ???? ? ??????. 4. Todo ? Fixme? ????? ???? ? ? ??? ??? ???? ?? ?? ? ??? ???????. ??? ???? ?? ??? ??? ?? ?? ?? ???? ???? ? ????.

?? ??????? ??? ?? ?? ??? ?? ????? ??? ???? ??? ????? ??? ??? ??? ??? ? ? ????. ??? ??? ??? ?? ???? ???? ?? ? ? ????. ??? ????? ???? ??? ??? ??, ?? ?? ?? ?? ? ?? ?? ??? ?????. ??? ?????? ???? ??? ??? ???? ? ? ??? ????? ??? ???? ????. ?? ?? ??? ???? ??, ??? ? ??? ?? ???? ?? ?? ? ?? ?? ???? ??? ????????. ??? ??? ?? ??? ??? ???? ?? ??? ?? ? ? ????. ??? ??? ???? ?? ??? ???? ?? ?? ?? ??? ??????.

?? ??? ???? ??? ??? ???? ????? ?? "?? ? ?"? ??? "?"? ???? ????. 1. ??? ?? ?? ?? ??? ?? ??? ?? ??? ??? ???????. 2. ??? ??? ?? ?? ??? ???? ?? ?? ????? ???? ????? ?????. 3. ????? ??? ???? ??? ???? ????, ???? ???, ??? ?? ?? ???? ?????. 4. ??? ?? ? ? ??? ??? ???? ?? ??? ??? ??? ?? ??? ?? ?? ??? ??????.

PHP ?? ??? ??? ???? ???? ?????. 1. ??? ??? ??? ??? ??? ??? ???? ?? ?? ?? ??? ??????? ??? ??? ???????. 2. ???? ????? ?? ?? ?, ?? ?? ???, API ????? ?? ?? ?? ????? ??? ?????. 3. ?? ?? ???? ??? ???? ????? ???? PHPDOC? ?? ?? ??? ??????. 4. ??? ???? ???? ?? ??? ????? ??????????. ?? ??? ?? ??? ???? ???? ?? ??? ??? ?? ?? ????? ?????????.

? ?? ??? ?? ?? ??? XAMPP ?? MAMP? ???? ?? ??? ???? ????. ? ?? ??? ???? ??? ?? ??? PHP ??? ???? ?? ?? ??? ???? ????. ? ?? ??? vscode ?? phpstorm? ???? ???? xdebug? ????? ????. ?? ???, PHP_CodesNiffer, PHPUnit ? ?? ??? ???? ??? ???????.

PHP ??? $? ???? ?? ??? ??? ??? ??? ??? ??? ??? ??????. ??? ??? ??, ??? ? ? ???? ????. ??? ??? Global? ???? ??? ? ? ??? ?? ??? ???? ?? ????. ?? ?? ? ?? ??????? ???????. ??? ???? ?????? ???? ??? ????? ???? ????? ?? ??? ?????.

PHP ??? ???? ? ?? ???? ??? ????. ?? ?? ??? ?? ?? ??? ?? // ?? #? ?? ?? ??? ??? ???? ? ?????. ?? ?? ?? /*...*/ ?? ?? ???? ?? ??? ??? ?????. ?? ?? ?? ?? ?? DocBlock /**? ???? IDE? ?? ??? ??? ?????. ??? ??? ?? ???? ??? ????? ?? ?????? ??? ???? ???? ??? ???? ??????.

PHP ?? ???? ?? ?? ?????? ???????. 1. a use == ? ? ???? ?? ??? ?????. 1 == "1"? ?? ?? ????. 2. 1 === "1"? ?? ??? ??? ?? ????? 2. ??; 3. ?? ??? "??"? ?? ?? ???? ??? ? ????.
