集合类的一些知识
2016-12-14 09:23
274 查看
1. map的key为非string对象时,如何判断key值是否存在
需要重写equals 方法和 hascode 方法, 举例如下
// 获取内部类对象
public BiCostForExcel getBiCostForExcel(String moldNo,String workOrderNo,String inTime,String sectionName,String workType){
return new BiCostForExcel(moldNo, workOrderNo, inTime, sectionName, workType);
}
// 内部类,用于加工工单导出EXCEL 构造数据
public class BiCostForExcel{
private String moldNo ;
private String workOrderNo ;
private String inTime ;
private String sectionName ;
private String workType ;
public BiCostForExcel(){}
public BiCostForExcel(String moldNo,String workOrderNo,String inTime,String sectionName,String workType){
this.moldNo = moldNo;
this.workOrderNo = workOrderNo;
this.inTime = inTime;
this.sectionName = sectionName;
this.workType = workType;
}
@Override
public boolean equals(Object obj) {
BiCostForExcel other = (BiCostForExcel) obj;
// 增加equals true
if(moldNo.equals(other.moldNo)&&workOrderNo.equals(other.workOrderNo)&&inTime.equals(other.inTime)&§ionName.equals(other.sectionName)&&workType.eq uals(other.workType)){
return true;
}
@Override
public int hashCode() {
/*final int prime = 31;
int result = 1;
result = prime * result + getOuterType().hashCode();
result = prime * result + ((inTime == null) ? 0 : inTime.hashCode());
result = prime * result + ((moldNo == null) ? 0 : moldNo.hashCode());
result = prime * result + ((sectionName == null) ? 0 : sectionName.hashCode());
result = prime * result + ((workOrderNo == null) ? 0 : workOrderNo.hashCode());
result = prime * result + ((workType == null) ? 0 : workType.hashCode());
return result;*/
int ret = new String(moldNo).hashCode() ^ new String(workOrderNo).hashCode()^ new String(sectionName).hashCode()^ new String(inTime).hashCode()^ new String(workType).hashCode();
// 也可以用下面这种方式计算hashCode
// int ret = String.valueOf(id).hashCode() ^ String.valueOf(type).hashCode();
//System.out.println(ret);
return ret;
}
public static void main(String[] args) {
BiCostForExcel biCostForExcel1 = new BiCostVo().getBiCostForExcel("1", "2", "2016/12/22", "CNC", "W");
BiCostForExcel biCostForExcel2 = new BiCostVo().getBiCostForExcel("1", "2", "2016/12/22", "CNC", "W");
System.out.println(biCostForExcel1==biCostForExcel2);
System.out.println(biCostForExcel1.equals(biCostForExcel2));
Map<BiCostForExcel, Double[]> map = new LinkedHashMap<BiCostForExcel, Double[]>();
map.put(biCostForExcel1, new Double[]{3.2d,4.3d});
System.out.println(map.containsKey(biCostForExcel2));
}
需要重写equals 方法和 hascode 方法, 举例如下
// 获取内部类对象
public BiCostForExcel getBiCostForExcel(String moldNo,String workOrderNo,String inTime,String sectionName,String workType){
return new BiCostForExcel(moldNo, workOrderNo, inTime, sectionName, workType);
}
// 内部类,用于加工工单导出EXCEL 构造数据
public class BiCostForExcel{
private String moldNo ;
private String workOrderNo ;
private String inTime ;
private String sectionName ;
private String workType ;
public BiCostForExcel(){}
public BiCostForExcel(String moldNo,String workOrderNo,String inTime,String sectionName,String workType){
this.moldNo = moldNo;
this.workOrderNo = workOrderNo;
this.inTime = inTime;
this.sectionName = sectionName;
this.workType = workType;
}
@Override
public boolean equals(Object obj) {
BiCostForExcel other = (BiCostForExcel) obj;
// 增加equals true
if(moldNo.equals(other.moldNo)&&workOrderNo.equals(other.workOrderNo)&&inTime.equals(other.inTime)&§ionName.equals(other.sectionName)&&workType.eq uals(other.workType)){
return true;
}
@Override
public int hashCode() {
/*final int prime = 31;
int result = 1;
result = prime * result + getOuterType().hashCode();
result = prime * result + ((inTime == null) ? 0 : inTime.hashCode());
result = prime * result + ((moldNo == null) ? 0 : moldNo.hashCode());
result = prime * result + ((sectionName == null) ? 0 : sectionName.hashCode());
result = prime * result + ((workOrderNo == null) ? 0 : workOrderNo.hashCode());
result = prime * result + ((workType == null) ? 0 : workType.hashCode());
return result;*/
int ret = new String(moldNo).hashCode() ^ new String(workOrderNo).hashCode()^ new String(sectionName).hashCode()^ new String(inTime).hashCode()^ new String(workType).hashCode();
// 也可以用下面这种方式计算hashCode
// int ret = String.valueOf(id).hashCode() ^ String.valueOf(type).hashCode();
//System.out.println(ret);
return ret;
}
public static void main(String[] args) {
BiCostForExcel biCostForExcel1 = new BiCostVo().getBiCostForExcel("1", "2", "2016/12/22", "CNC", "W");
BiCostForExcel biCostForExcel2 = new BiCostVo().getBiCostForExcel("1", "2", "2016/12/22", "CNC", "W");
System.out.println(biCostForExcel1==biCostForExcel2);
System.out.println(biCostForExcel1.equals(biCostForExcel2));
Map<BiCostForExcel, Double[]> map = new LinkedHashMap<BiCostForExcel, Double[]>();
map.put(biCostForExcel1, new Double[]{3.2d,4.3d});
System.out.println(map.containsKey(biCostForExcel2));
}
相关文章推荐
- 一些ARM知识集合
- 一些数学知识集合
- Shell编程的一些知识集合
- JAVA的一些高级知识集合
- Java 集合框架分析:JAVA集合中的一些边边角角的知识
- 一些分散知识集合:
- 黑马程序员:java中集合的一些小知识
- 关于Android service的一些基础知识集合
- Java集合框架的知识总结(1) 说明:先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析。 1、综述 所有集合类
- 关于java集合的一些零碎知识什锦
- 黑马程序员_Map集合练习和工具类以及一些新的知识
- JAVA的一些高级知识集合
- 开发中使用集合的一些基本知识
- GeoGraphics文档中关于坐标系统的一些知识
- 打印的一些知识!
- 关于堆和栈的一些知识(Z)
- java新手必读,一些入门知识
- 关于字符集的一些知识
- 一些经典但惊人的知识
- GOOGLE的排名的一些知识