Java比较器对数组,集合排序二

 

需求:在实际项目中,我们常常需要对一些对象根据一定规则排序,如果人员对象要根据人名拼音排序,更进一步,有些政府公关项目需要将领导人的姓名排在第一位Java比较器对数组,集合排序二.做过权限部分的朋友们应该都了解此需求,那么就需要我们对中文排序,而往往我们的人员或者角色对象都放在一个List中,那么如何进行指定规则的排序呢,
如有,张三,李四,领导,我
需要结果,我-->领导-->李四-->张三
请看代码,顺便了解下Java中强大的比较器。

1.有一个Person类(Person.java),有三个属性,代码如下:

package com.shx.domain; import java.io.Serializable; public class Person implements Serializable { private long userid; private String username; private String password; public Person() { } public Person(Integer userid, String username, String password) { this.userid = userid; this.username = username; this.password = password; } //set 和 get 方法自己添加 @Override public String toString() { String userString = "" + this.userid + "-->" + this.username + "-->"+this.password ; return userString; } }
2.自定义的比较器的排序类PersonComparator.java 代码如下:
package com.shx.util; import java.text.ParseException; import java.text.RuleBasedCollator; import java.util.Comparator; import com.shx.domain.Person; public class PersonComparator implements Comparator<Person> { @Override public int compare(Person o1, Person o2) { String myrule = "<我<领<李<张"; RuleBasedCollator myrulecollato = null; try { myrulecollato = new RuleBasedCollator(myrule); } catch (ParseException e) { e.printStackTrace(); } return myrulecollato.compare(o1.getUsername(), o2.getUsername()); } }
3.我们的客户端,测试代码
package com.shx.client; import java.util.ArrayList; import java.util.Collections; import java.util.List; import com.shx.domain.Person; import com.shx.util.PersonComparator; public class UserManagerClient { public static void main(String[] args) { List<Person> personList = new ArrayList<Person>(); Person p1 = new Person(1,"李四","password4"); Person p2 = new Person(2,"张三","password3"); Person p3 = new Person(3,"领导","password7"); Person p4 = new Person(4,"我","password8"); personList.add(p1); personList.add(p2); personList.add(p3); personList.add(p4); PersonComparator pc = new PersonComparator(); Collections.sort(personList, pc); for (Person p : personList) { System.out.println(p); } } }
4.测试结果

4-->我-->password8
3-->领导-->password7
1-->李四-->password4
2-->张三-->password3

哈哈,我排在领导前面啦Java比较器对数组,集合排序二

你可能感兴趣的:(Java比较器对数组,集合排序二)