猿问

在Java中,C+对<L,R>的等价性是什么?

在Java中,C+对<L,R>的等价性是什么?

有什么很好的理由Pair<L,R>在爪哇?这个C+结构的等价性是什么?我宁愿避免重新实施我自己的。

看来1.6正在提供类似的东西(AbstractMap.SimpleEntry<K,V>),但这看起来相当复杂。


侃侃尔雅
浏览 439回答 3
3回答

米琪卡哇伊

这是爪哇。您必须使用描述性类名和字段名来定制您自己的对对类,而不必担心您将通过编写hashCode()/equals()或一次又一次地实现可比较的方式来重新发明轮子。

炎炎设计

HashMap兼容的对类:public&nbsp;class&nbsp;Pair<A,&nbsp;B>&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;A&nbsp;first; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;B&nbsp;second; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Pair(A&nbsp;first,&nbsp;B&nbsp;second)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.first&nbsp;=&nbsp;first; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.second&nbsp;=&nbsp;second; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;hashCode()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;hashFirst&nbsp;=&nbsp;first&nbsp;!=&nbsp;null&nbsp;?&nbsp;first.hashCode()&nbsp;:&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;hashSecond&nbsp;=&nbsp;second&nbsp;!=&nbsp;null&nbsp;?&nbsp;second.hashCode()&nbsp;:&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(hashFirst&nbsp;+&nbsp;hashSecond)&nbsp;*&nbsp;hashSecond&nbsp;+&nbsp;hashFirst; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;boolean&nbsp;equals(Object&nbsp;other)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(other&nbsp;instanceof&nbsp;Pair)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pair&nbsp;otherPair&nbsp;=&nbsp;(Pair)&nbsp;other; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((&nbsp;&nbsp;this.first&nbsp;==&nbsp;otherPair.first&nbsp;|| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;this.first&nbsp;!=&nbsp;null&nbsp;&&&nbsp;otherPair.first&nbsp;!=&nbsp;null&nbsp;&& &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.first.equals(otherPair.first)))&nbsp;&& &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;&nbsp;this.second&nbsp;==&nbsp;otherPair.second&nbsp;|| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;this.second&nbsp;!=&nbsp;null&nbsp;&&&nbsp;otherPair.second&nbsp;!=&nbsp;null&nbsp;&& &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.second.equals(otherPair.second)))&nbsp;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;String&nbsp;toString() &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"("&nbsp;+&nbsp;first&nbsp;+&nbsp;",&nbsp;"&nbsp;+&nbsp;second&nbsp;+&nbsp;")";&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;A&nbsp;getFirst()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;first; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setFirst(A&nbsp;first)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.first&nbsp;=&nbsp;first; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;B&nbsp;getSecond()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;second; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setSecond(B&nbsp;second)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.second&nbsp;=&nbsp;second; &nbsp;&nbsp;&nbsp;&nbsp;}}
随时随地看视频慕课网APP

相关分类

Java
我要回答