java list<自定义对象>按对象的某个属性进行排序,和判断相等
来源:互联网 发布:淘宝老是要输入验证码 编辑:程序博客网 时间:2024/05/22 02:27
import java.io.Serializable;public class ContactItem implements Comparable<ContactItem>,Serializable {private String name;private String number;private String alpha;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public String getAlpha() {return alpha;}public void setAlpha(String alpha) {this.alpha = alpha;} @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { //按照你想要的方法去比较,比如我这里比较的是姓名,号码,相等就返回true if(!(obj instanceof ContactItem)) return false; ContactItem contactItem= (ContactItem)obj; return (this.getName().equals(contactItem.getName())&&this.getNumber().equals(contactItem.getNumber())); }@Overridepublic int compareTo(ContactItem another) { if (another == null) { try { throw new Exception("该对象为空!"); } catch (Exception e) { e.printStackTrace(); } } if (!(this.getClass().getName().equals(another.getClass().getName().toString()))) { try { throw new Exception("该对象的类名不一致!"); } catch (Exception e) { e.printStackTrace(); } } if (!(another instanceof ContactItem)) { try { throw new Exception("该对象不是ContactItem的实例!"); } catch (Exception e) { e.printStackTrace(); } } ContactItem contactItem = (ContactItem) another; return this.getAlpha().compareTo(contactItem.getAlpha()); }}
关于排序:
1 : 格式, 实现Comparable<T>接口
应该这样写 public class ContactItem implements Comparable<ContactItem>
一开始看的其他人的文章,他居然是这样写的 public class Student<T> implements Comparable<T> ,虽然也不报错,但是明显不好看。。
2:重写compareTo(ContactItem another) {}这个方法
3: 调用:Collections.sort(list);
关于判断是否相等:
1:必须重写equals(Object obj)方法和重写hashcode()方法。
规范1:若重写equals(Object obj)方法,有必要重写hashcode()方法,确保通过equals(Object obj)方法判断结果为true的两个对象具备相等的hashcode()返回值。
规范2:如果equals(Object obj)返回false,即两个对象“不相同”,并不要求对这两个对象调用hashcode()方法得到两个不相同的数。说的简单点就是:“如果两个对象不相同,他们的hashcode可能相同”。
根据这两个规范,可以得到如下推论:
1、如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等。
2、如果两个对象不equals,他们的hashcode有可能相等。
3、如果两个对象hashcode相等,他们不一定equals。
4、如果两个对象hashcode不相等,他们一定不equals。
这方面的文章参考:http://blog.csdn.net/chy800/article/details/7239838
2:一开始怎么都是false,原因是字符串的判断,我居然用了==,应该用.equals();好幼稚的错,害我还以为是不是 实现Comparable<T>接口 哪里代码写的有问题。。。
- java list<自定义对象>按对象的某个属性进行排序,和判断相等
- java 对象比较 判断两个对象的某些或某个属性相同 这对象相等。
- 自定义对象里面的 针对 某个属性 / 字段 进行排序
- Java集合按照对象的某个属性进行比较排序
- java对象集合中某个属性的汉字进行按拼音进行排序
- 直接比较两个对象是否相等返回false和List中判断是否包含某个对象的问题
- 对对象按对象的某个属性进行排序
- 【Java】对于自定义对象List进行排序
- Java 对象之间的比较,判断两个对象的某一个属性相等,则对象相等
- python list存放对象,按对象某个属性排序
- List 根据对象的属性自定义排序
- Java 对 List 内对象根据对象属性进行排序
- 【ios】如何按照自定义类的对象的某个属性进行排序
- 数组排序(按对象中某个属性进行排序)
- Java按照List内存储的对象的某个字段进行排序
- JavaScript按照对象的某个属性进行排序
- java对象判断相等
- 关于List<object>中按对象的某个属性值排序的方法
- 作业,仅供学习参考
- dig www.126.cn问题:向其ns上查询任何域名都返回同一个IP;-t ns 查不到
- 基于ARM的嵌入式Linux移植真实体验(5)――应用实例
- CentOS7 下源码安装MPlayer播放器
- 27款经典的 CSS 框架分享
- java list<自定义对象>按对象的某个属性进行排序,和判断相等
- js基本功能大全
- 兔子--Android Support v4,Android Support v7,Android Support v13
- nyoj-1112-求次数
- 在mac系统安装Apache Tomcat的详细步骤
- Visual Studio, 忽略特定警告
- 基于ARM的嵌入式Linux移植真实体验(4)――设备驱动
- java基础-》Future
- WebView与Javascript无法交互问题