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
;
}
}
查看全文
相关阅读:
如何设置PPT,演示者能看到备注而观众看不到
面向对象的设计原则-类设计原则
C#路径
MyEclipse汉化
XML
C#读取Excel文件
预处理指令
c/c++有些函数之前有export
动态内存
模板
原文地址:https://www.cnblogs.com/jobs/p/25696.html
最新文章
Mysql with nolock 查询
异步Task捕获异常
MongoDB找出子集数据并输出结果
Angular中数组与字典循环写法
centos7 nginx安装启动与配置通用Nginx.conf
Nginx最简单的nginx.conf配置与说明(centos7)
Owin Nuget 包解释
性能优化第1节课
.Net Core
.NET Core基础理论
热门文章
线程原理篇——>第7章 线程
线程原理篇——>第9章 死锁应对之哲学原理
锁的进化——金鱼生存
线程同步的目的
夯实根基
线程原理篇——>第8章 线程同步
为什么要同步
编程面试十大算法
JAVA super的用法
面向对象方法中的数据库设计
Copyright © 2011-2022 走看看