自定义java排序

1: 使用Collections.sort排序 import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Test2 {   public static void main(String[] arg) {         List list = new ArrayList ();     list.add(new Student(2, "张三 "));     list.add(new Student(1, "李四 "));     list.add(new Student(4, "王二 "));     list.add(new Student(3, "赵五 "));     // Comparator comparator = getComparator( "id ");     Comparator comparator = getComparator( "name ");          Collections.sort(list, comparator);          // 输出     for(Student stu : list) {       System.out.println(stu.getId() + " --> " + stu.getName());     }   }      private static Comparator getComparator(String fieldName) {     if(fieldName.equalsIgnoreCase( "id ")) {       return new StudentIdComparator ();     }     if(fieldName.equalsIgnoreCase( "name ")) {       return new StudentNameComparator ();     }     return null;   } } class Student {   private int id;   private String name;       } /** * 按照学生的 id 号大小升序排序 */ class StudentIdComparator     implements Comparator {   public int compare(Student o1, Student o2) {     return o1.getId() - o2.getId();   }   } /** * 按照学生的 name 的 GB2312 编码排序(简单字可以理解为音序) */ class StudentNameComparator     implements Comparator {     public int compare(Student o1, Student o2) {     return getGBK(o1.getName()).compareTo(getGBK(o2.getName()));   }   private String getGBK(String str) {     byte[] bytes = null;     try {       bytes = str.getBytes( "gb2312 ");     } catch (UnsupportedEncodingException e) {       e.printStackTrace();     }     StringBuffer sb = new StringBuffer();     for(byte b : bytes) {       sb.append(String.format( "%02X ", b));     }     return sb.toString();   } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值