=
ホーム
On Your Mark
ホーム
/
設計(Java)
/
【Java】 Effective Java 第二版 お勉強 Comparable
2013年10月18日金曜日
Java
基本
設計(Java)
t
f
B!
P
L
# すべてのオブジェクトに共通のメソッド ## 今日 読んだところ P 62~66 ## 項目 Comparableの実装を検討する<br /> ## comapreToメソッド comapreToメソッドは、Comparable独自のメソッド。<br /> Comparableを実装することで使用可能。<br /> ## comapreToの決まりごと 1.sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) を保障すること<br /> →x.compareTo(y) が例外をスローする場合は、y.compareTo(x) もスローしなければならない<br /> 2.(x.compareTo(y) > 0 && y.compareTo(z) > 0) がtrueなら x.comparetTo(z) > 0 もtrueであること (関係が推移的であることを保障)<br /> 3.x.compareTo(y) == 0 がtrueなら sgn(x.comparetTo(z)) == sgn(y.compareTo(z)) は必ずtrueであること<br /> 4.x.compareTo(y) == 0 がtrueなら x.equals(y) もtrueであることを推奨 (必須ではない)<br /> ## compareTo と equals が一致しないパターン BigDecimalは compareTo と equals が一致しないクラスです。 <pre> BigDecimal decimal1 = new BigDecimal("1.0"); BigDecimal decimal2 = new BigDecimal("1.00"); Set<BigDecimal> set1 = HashSet<BigDecimal>(); set1.add(decimal1); set1.add(decimal2); System.out.println("HashSet Size:" + set1.size()); Set<BigDecimal> set2 = TreeSet<BigDecimal>(); set2.add(decimal1); set2.add(decimal2); System.out.println("TreeSet Size:" + set2.size()); ----- HashSet Size:2 TreeSet Size:1 </pre> ## double, float は注意 float は、Float.equals Float.compareを使う<br /> double は、Double.equals Double.compareを使う<br /> これは、NaN や -0.0f/-0.0d が equalsとcompareToの契約を守れないためです。<br /> JavaDocにもしっかりかかれてました。<br />
Translate
このブログを検索
ブログアーカイブ
►
2020
(38)
6月 2020
(6)
5月 2020
(10)
4月 2020
(10)
3月 2020
(4)
2月 2020
(5)
1月 2020
(3)
►
2019
(4)
1月 2019
(4)
►
2018
(23)
12月 2018
(3)
4月 2018
(11)
3月 2018
(9)
►
2014
(20)
7月 2014
(3)
1月 2014
(17)
▼
2013
(166)
12月 2013
(15)
11月 2013
(22)
10月 2013
(31)
9月 2013
(26)
8月 2013
(32)
7月 2013
(40)
今週の人気の記事
【まとめ】GWはおうちでぬりえ 鉄道会社公式の電車ぬりえをまとめた
【まとめ】おうちでペーパークラフト 鉄道会社公式のペーパークラフトをまとめた
【PHP】PHPでSFTP接続
【MySQL】文字列をバイト数で切り取る
【考察】シンカリオン E5はやぶさの性能をまとめてみる
フォロワー
On Your Mark
QooQ
0 件のコメント:
コメントを投稿