1. 程式人生 > >java排序(1)——根據中文漢字排序

java排序(1)——根據中文漢字排序

初始 bject obj com author util 需要 int ()

工作中,我們經常會遇到需要進行各種排序的需求。現在就對於在工作中遇到的“根據名稱進行排序”進行歸納總結。

 1 package compare;
 2 
 3 /**
 4  * @Todo 要排序的實體類
 5  * @author Wu Yuwei
 6  * @date 2019年2月25日下午10:47:02
 7  */
 8 public class CompareDao implements Comparable<CompareDao>{
 9 
10     private String name;
11     private
int age; 12 13 public CompareDao(String name, int age) { 14 super(); 15 this.name = name; 16 this.age = age; 17 } 18 19 public String getName() { 20 return name; 21 } 22 23 public void setName(String name) { 24 this.name = name;
25 } 26 27 public int getAge() { 28 return age; 29 } 30 31 public void setAge(int age) { 32 this.age = age; 33 } 34 35 @Override 36 public int compareTo(CompareDao name) { 37 // TODO Auto-generated method stub 38 return this.getName().compareTo(name.getName());
39 } 40 41 @Override 42 public String toString() { 43 return "CompareDao [name=" + name + ", age=" + age + "]"; 44 } 45 46 }
 1 package compare;
 2 
 3 import java.text.Collator;
 4 import java.util.ArrayList;
 5 import java.util.Collections;
 6 import java.util.Comparator;
 7 import java.util.List;
 8 
 9 import org.junit.Test;
10 
11 public class Compare {
12     
13     /**
14      * 根據中文名稱排序
15      */
16     @Test
17     public void test01(){
18         List<CompareDao> list = init();
19         Collections.sort(list, new Comparator<CompareDao>() {
20 
21             @Override
22             public int compare(CompareDao o1, CompareDao o2) {
23                 Comparator<Object> compare = Collator.getInstance(java.util.Locale.CHINA);
24                 return compare.compare(o1.getName(), o2.getName());
25             }  
26         });  
27         System.out.println(list);
28         
29     }
30     
31     /**
32      * 初始化
33      */
34     public static List<CompareDao> init() {
35         CompareDao dao1 = new CompareDao("陳好", 20);
36         CompareDao dao2 = new CompareDao("陳赫", 30);
37         CompareDao dao3 = new CompareDao("陳家", 20);
38         CompareDao dao4 = new CompareDao("程咬金", 20);
39         CompareDao dao5 = new CompareDao("陳真", 80);
40         CompareDao dao6 = new CompareDao("蔡明", 60);
41         CompareDao dao7 = new CompareDao("蔡國慶", 65);
42         CompareDao dao8 = new CompareDao("方世玉", 80);
43         CompareDao dao9 = new CompareDao("馬雲", 50);
44         CompareDao dao10 = new CompareDao("張國榮", 60);
45         CompareDao dao11 = new CompareDao("張學友", 55);
46         
47         
48         List<CompareDao> list = new ArrayList<>();
49         list.add(dao1);
50         list.add(dao2);
51         list.add(dao3);
52         list.add(dao4);
53         list.add(dao5);
54         list.add(dao6);
55         list.add(dao7);
56         list.add(dao8);
57         list.add(dao9);
58         list.add(dao10);
59         list.add(dao11);
60         return list;
61     }
62 }

排序結果:

[CompareDao [name=蔡國慶, age=65], CompareDao [name=蔡明, age=60], CompareDao [name=陳好, age=20], CompareDao [name=陳赫, age=30], CompareDao [name=陳家, age=20], CompareDao [name=陳真, age=80], CompareDao [name=程咬金, age=20], CompareDao [name=方世玉, age=80], CompareDao [name=馬雲, age=50], CompareDao [name=張國榮, age=60], CompareDao [name=張學友, age=55]]

思路總結:

  1. 實體類要實現Comparable借口,並在重寫的方法中指定要排序的熟悉(如:name);
  2. 在方法中通過Collections的sort()方法對其進行排序。

  

本屌第一次寫博客,哈哈簡陋極了!!!

java排序(1)——根據中文漢字排序