zoukankan
html css js c++ java
一个工具类Pair的实现
Pair类常用,基础类库中也有提供,但是都没有包括HashCode和Equals的处理,恰好需要用,便写了一个,代码如下,HashCode的地方有些拿不准,欢迎大家拍砖!
public
class
Pair
{
//
Fields
public
object
First;
public
object
Second;
//
Methods
public
Pair()
{
}
public
Pair(
object
first,
object
second)
{
this
.First
=
first;
this
.Second
=
second;
}
public
override
int
GetHashCode()
{
if
(First
==
null
)
{
return
Second
!=
null
?
Second.GetHashCode() :
0
;
}
else
{
if
(Second
==
null
)
{
return
First.GetHashCode();
}
else
{
long
temp
=
First.GetHashCode()
+
Second.GetHashCode();
//
这里有些拿不准,参考JDK Long的实现的,但JDK中使用的无符号有移运算符>>>
return
(
int
)(temp
^
(temp
>>
32
));
}
}
}
public
override
bool
Equals(
object
obj)
{
Pair cmpVal
=
obj
as
Pair;
if
(cmpVal
==
null
)
{
return
false
;
}
if
(
this
.First
!=
null
)
{
if
(
!
this
.First.Equals(cmpVal.First))
{
return
false
;
}
}
else
{
if
(cmpVal.First
!=
null
)
{
return
false
;
}
}
if
(
this
.Second
!=
null
)
{
return
this
.Second.Equals(cmpVal.Second);
}
else
{
return
cmpVal.Second
==
null
;
}
}
public
static
bool
operator
==
(Pair lhs, Pair rhs)
{
if
(lhs
!=
null
)
{
return
lhs.Equals(rhs);
}
return
rhs
==
null
;
}
public
static
bool
operator
!=
(Pair lhs, Pair rhs)
{
if
(lhs
!=
null
)
{
return
!
lhs.Equals(rhs);
}
return
rhs
!=
null
;
}
}
查看全文
相关阅读:
Android源码分析(二)-----如何编译修改后的framework资源文件
Android源码分析(一)-----如何快速掌握Android编译文件
AI2(App Inventor 2)离线版服务器网络版
AI2(App Inventor 2)离线版服务器单机版
AI2(App Inventor 2)离线版服务器(2019.04.28更新)
解释器模式
迭代器模式
备忘录模式
访问者模式
命令模式
原文地址:https://www.cnblogs.com/jobs/p/25696.html
最新文章
MD5加密Util
判空、判等、转码的StringUtil
HttpServletRequest内容处理工具类
redis增删查改数据Util
xmlString和map互转Util
使用卷积神经网络对mnist数据集进行分析
Python 之接口自动化测试框架完整搭建
Python绘制正余弦函数图像的方法
Python简单的基础总结
fastapi之根据model生成schema和router
热门文章
Python学习之 函数
Python程序设计之 函数和代码复用
Spring IOC DI AOP 事务
MySQL8.0-INFORMATION_SCHEMA增强的中文翻译
Java实现工厂方法模式
Android源码分析(七)-----如何解决java编译版本问题
Android源码分析(六)-----蓝牙Bluetooth源码目录分析
Android源码分析(五)-----如何从架构师的角度去设计Framework框架
Android源码分析(四)-----Android源码编译及刷机步骤
Android源码分析(三)-----系统框架设计思想
Copyright © 2011-2022 走看看