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
;
}
}
查看全文
相关阅读:
基础算法:求目标值 &字符串反转
算法计算出股票最佳交易时间点
Python 设计模式—命令模式
Python 设计模式—代理模式
有趣的算法题~单调栈
令人头大的字符串—算法处理
WebUI 自动化测试的经典设计模式:PO
双指针—滑动窗口算法解析
Python 设计模式—观察者模式
多线程之读写锁原理
原文地址:https://www.cnblogs.com/jobs/p/25696.html
最新文章
《将博客搬至CSDN》
OOunit1
你在 B 站看番剧,别人在 B 站学 Python !
2021最新React全家桶项目实战教程(全球新闻发布管理系统)
B站上有哪些优质的程序员UP主?
C++11的enable_shared_from_this
视频 QoE 的平衡之道—揭秘网易云信 NERTC 视频质量控制系统
8问8答,一篇文章读懂空间音效
使用高级视频质量工具 AVQT 评估视频 | WWDC 演讲实录
使用 VideoToolbox 探索低延迟视频编码 | WWDC 演讲实录
热门文章
技术实践 | 如何基于 Flink 实现通用的聚合指标计算框架
网易云信大规模聊天室系统架构解析
探寻用户自定义定时任务的实践方案
如何在 Electron 上实现 IM SDK 聊天消息全文检索
架构解析|网易自研新一代大规模分布式传输网
直播点播窄带高清之 JND 感知编码技术
老鼠和毒药的问题
Python 设计模式—访问者模式
精准测试系列《二》
精准测试系列《一》
Copyright © 2011-2022 走看看