java – 为对象提供多种类型的排序
假设我有一个带有多个String字段的
java对象.
public class Person { private String field1 // keeps going 我希望能够根据我选择的任何领域对人员列表进行排序. 我知道我可以使用比较器接口并实现多个compareTo,如主题:How do I make 2 comparable methods in only one class?中所述 但是在使用Collections.sort()时 但是,如果没有所有这些重复代码,我有什么方法可以做到这一点吗? 解决方法
@JB Nizet的Java 8解决方案将成为一个技巧,但它仅适用于Java 8.大多数人使用的低于8的版本是什么? 我将为您提供我认为比Java 8更低版本的简单解决方案. 您真的不需要创建多个Comparator类(您将其称为“重复代码”).如何使用适当的技术,如条件或枚举? private Comparator<YourClass> getComparator(MyPropertiesEnum myEnum) { return new Comparator<YourClass>() { @Override public int compare(YourClass o1,YourClass o2) { { switch (myEnum) { case FIRSTNAME: // implementation for firstname break; case LASTNAME: // implementation for lastname break; default: // implementation for default version break; } } }; } MyPropertiesEnum的位置如下: public enum MyPropertiesEnum { FIRSTNAME,LASTNAME,AGE; } 注意:如果条件适合您,也可以使用适当的条件. 希望它能帮助您解决问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – 如何纠正删除catalina.out?
- Hibernate cache.region_prefix属性:设置二级缓存的前缀名
- java – CompletableFuture相当于flatMap是什么?
- Java中float类型的范围及其与十六进制的转换例子
- 详解Spring Cloud Zuul中路由配置细节
- 在Java中弹跳球
- java – 通过反射来改变最终变量,为什么静态和非静态的最终
- java – AWT,SWT,Swing,SAF / JSR-296,JFace,NetBeans平台和
- 我怎么能用java.util.Calendar返回伊斯兰历法?
- Java Bitwise“&”在整数上