Java的比较

一、==
     适用于基本对象值的比较,其他对象是比较引用的地址
二、equals和compareTo
不同对象实现意义不一样
常用对象比较:
String:
equals比较的是值相等返回true
compareTo  只有在方法 equals(Object) 返回 true 时才返回 0(摘录JDK API)

Long:
equals和compareTo基本相同

BigDecimal:
equals:除了值,小数位完全一致才相同,比如:2.00和2.0就返回false
compare:值相同就可,2.00和2.0是相等的

性能比较好的匿名类比较器实现,比较器只实例化一次:[effecttive java P92]
private static class FlowInfoCompar implements Comparator<FlowInfoDto>{
		public int compare(FlowInfoDto o1, FlowInfoDto o2) {
			if (o1 != null && o2 != null && o1.getCreateTime() != null
					&& o2.getCreateTime() != null) {
				return o2.getCreateTime().compareTo(o1.getCreateTime());
			}
			return 0;
		}
	}
	
	public static final Comparator<FlowInfoDto> FLOW_INFO_COMPAR = new FlowInfoCompar();
	
	private void sortFlowInfoListByTime(List<FlowInfoDto> flowInfoList) {
		Collections.sort(flowInfoList, FLOW_INFO_COMPAR);
	}

你可能感兴趣的:(java,jdk)