有些时候(比如说lab3,两个物体之间的关系)我能想起的解决方案就是一个野蛮的三维表,然而当我要构造一个HashMap<Pair<a,b>,realtion>的时候,发现没有Pair这个好用的东西。
这段就是从lab3-lab6一直躺在lib目录下的Pair
直接上代码
// An highlighted block
public class Pair<A, B> {
private A first;
private B second;
public Pair(A first, B second) {
super();
this.first = first;
this.second = second;
}
public int hashCode() {
int hashFirst = first != null ? first.hashCode() : 0;
int hashSecond = second != null ? second.hashCode() : 0;
return (hashFirst + hashSecond) * hashSecond + hashFirst;
}
public boolean equals(Object other) {
if (other instanceof Pair) {
Pair otherPair = (Pair) other;
return
(( this.first == otherPair.first ||
( this.first != null && otherPair.first != null &&
this.first.equals(otherPair.first))) &&
( this.second == otherPair.second ||
( this.second != null && otherPair.second != null &&
this.second.equals(otherPair.second))) );
}
return false;
}
public String toString()
{
return "(" + first + ", " + second + ")";
}
public A getFirst() {
return first;
}
public void setFirst(A first) {
this.first = first;
}
public B getSecond() {
return second;
}
public void setSecond(B second) {
this.second = second;
}
}
这段代码直接来自StackOverflow:https://stackoverflow.com/questions/156275/what-is-the-equivalent-of-the-c-pairl-r-in-java
当然听说java有其他很好用的类似的类,Map.Entry, Range(begin,end),Position(x,y)等。
说不定日后会补上这些的用法(挖坑)