自定义对象中文排序,可以指定排序的字段名,较为通用
来源:互联网 发布:wp 添加js 编辑:程序博客网 时间:2024/06/05 06:24
public final class Sorting { public static void main(String[] args) { List<Person> persons = new ArrayList<>(); persons.add(new Person(2, "张三","北京")); persons.add(new Person(1, "李四","aaa")); persons.add(new Person(3, "王五","广州")); persons.add(new Person(4, "赵六","深圳")); Collections.sort(persons, new SortedUtil("name")); for (Person person : persons) { System.out.println(person.getId() + "" + person.getName()); } Collections.sort(persons, new SortedUtil("address")); for (Person person : persons) { System.out.println(person.getId() + "" + person.getName() + " " + person.getAddress()); } }}/** * 根据传入的字段进行中文排序 */class SortedUtil implements Comparator<Object> { private Collator collator = Collator.getInstance(Locale.CHINA); private String field; public SortedUtil(String field) { this.field = field; } @Override public int compare(Object o1, Object o2) { String name = this.field; String methodName = "get" + name.substring(0, 1).toUpperCase() + name.substring(1); try { Method method = o1.getClass().getMethod(methodName); try { Object invoke1 = method.invoke(o1); Object invoke2 = method.invoke(o2); return collator.compare(invoke1, invoke2); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } catch (NoSuchMethodException e) { e.printStackTrace(); } return 0; }}class Person { private int id; private String name; private String address; public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Person(int id, String name, String address) { this.id = id; this.name = name; this.address = address; } public Person(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
最简单的实现,未做优化。
0 0
- 自定义对象中文排序,可以指定排序的字段名,较为通用
- mysql自定义排序按,中文字段排序
- MySQL 按指定字段自定义列表排序
- MySQL 按指定字段自定义列表排序
- MySQL 按指定字段自定义列表排序
- list内对象按照指定字段排序
- 任意对象数组ArrayList的排序法(可自定义排序字段、排序方向)
- 自定义对象里面的 针对 某个属性 / 字段 进行排序
- 逐步为对象集合构建一个通用的按指定属性排序的方法
- MYSQL用法(十六) MySQL按指定字段自定义列表排序
- Mysql中文字段排序
- mysql中文字段排序
- ORACLE中文字段排序
- mysql中文字段排序
- 通过反射修改指定对象字段值的通用方法
- java list按照元素对象的指定多个字段属性进行排序
- java list按照元素对象的指定多个字段属性进行排序
- java list按照元素对象的指定多个字段属性进行排序
- JAVA中获取项目文件路径
- Android之SimpleAdapter简单实例和SimpleAdapter参数说明
- OpenGL顶点缓冲区一步步分析
- 第七章 动态内存管理
- SH整合异常:SessionFactoryImplementor.getProperties()Ljava/util/Map
- 自定义对象中文排序,可以指定排序的字段名,较为通用
- 深度网络之梯度下降算法
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之十:Spring mvc & hibernate 事务处理(回滚)
- ios总结
- 设计模式之-单例模式
- the java syncrhonisers
- MyBatis学习总结(一)——MyBatis快速入门
- too many connections
- Unity面试题整理(3)--unity知识点扫盲