=
ホーム
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はおうちでぬりえ 鉄道会社公式の電車ぬりえをまとめた
【まとめ】おうちでペーパークラフト 鉄道会社公式のペーパークラフトをまとめた
【考察】シンカリオン 名前の由来を考察 -運転士編-
【MySQL】文字列をバイト数で切り取る
【考察】シンカリオン E5はやぶさの性能をまとめてみる
フォロワー
On Your Mark
QooQ
0 件のコメント:
コメントを投稿