- ★★Java質問・相談スレッド176★★ [無断転載禁止]©2ch.net
6 :デフォルトの名無しさん[sage]:2016/01/21(木) 06:41:58.31 ID:gmF2lxtT - > remove使わないならそれ専用のインターフェース作るのか?
そんな極端な話誰もしてないだろう インターフェース作ることで多数の実装が想定できるなら利点はあるけど、 remove のない別のインターフェースを作ったところで意味は成さない インターフェースの利点の一つは、具象クラスの置き換えが効くこと だから、置き換えが想定される場所ではインターフェースを利用することでコードの修正箇所を極小化できるし、 また、そのインターフェースを使ったコードは別の具象クラスに対しても再利用できる まぁこれだけなら abstract クラスにも当てはまる単なるポリモーフィズムの利点だけど List に関しては ArrayList しかほぼ使わん以上あまり意味のあるものじゃないだろうけどな 短いから var 感覚で使ってる点はあるだろう ただ標準APIとしては、ArrayList、LinkedList 以外にも他の人が(もしくは後のバージョンで)別のList実装作る可能性も考慮したのかもしれない
|
- ★★Java質問・相談スレッド176★★ [無断転載禁止]©2ch.net
9 :デフォルトの名無しさん[sage]:2016/01/21(木) 07:43:46.01 ID:gmF2lxtT - >>7
> 異なるデータ構造を無理矢理同じインターフェースに纏めたのは失敗 インターフェースってそもそもそういうものだろ 実装が異なるんだから、データ構造が異なるのも当然ありうる 実装の違いを吸収するのがインターフェースの役割なんだから その名の通り、外部との接続の仕様(=インターフェース)が異なる場合にインターフェースを分ければ良い ArrayList と LinkedList で get の計算量の違いを仕様が異なると判断するならインターフェースを分けることになるだろうし Java の場合はまとめて、ランダムアクセス可能なことを示すマーカーインターフェースを別に作ったってだけ 個人的には別にそれが悪い判断だったとは思わない
|
- ★★Java質問・相談スレッド176★★ [無断転載禁止]©2ch.net
11 :デフォルトの名無しさん[sage]:2016/01/21(木) 07:53:08.12 ID:gmF2lxtT - > 圧倒的に多く使われる「配列っぽいもの」の利便性を大きく損なう
trimToSize と ensureCapacity が使えないことが利便性を大きく損なう事なのか? ちょっと言ってることがよく分からん
|
- ★★Java質問・相談スレッド176★★ [無断転載禁止]©2ch.net
13 :デフォルトの名無しさん[sage]:2016/01/21(木) 08:10:42.16 ID:gmF2lxtT - > インデックスを指定するメソッドを使用するときには必ず
> 要素の参照にO(N)かかることを考慮しなければならない それによって書くコードが変わることなんてほとんど無いと思うけどな LinkedList 渡して処理に時間がかかるなら、それはさすがに渡してきた奴の責任だと思うし
|
- ★★Java質問・相談スレッド176★★ [無断転載禁止]©2ch.net
15 :デフォルトの名無しさん[sage]:2016/01/21(木) 08:29:08.06 ID:gmF2lxtT - > そりゃ今現在LinkedListが紛れ込む可能性があるんだから今あるコードに大きな違いが生じないのは当たり前でしょ
そうじゃなくて、List が RandomAccess かどうかでコードが変わることが無いって話 今は LinkedList が紛れ込む可能性あるけど、RandomAccess インターフェースを確認してるコードなんてほぼないでしょ > 元々インデックスが常にO(1)だったとしたら普通にみんなforループ回してるよ 言ってる意味わからん、今でも普通に for ループまわしてるよ 拡張 for 文のほうがむしろ書きやすいし、それをもって不便ってことはないだろ
|
- ★★Java質問・相談スレッド176★★ [無断転載禁止]©2ch.net
18 :デフォルトの名無しさん[sage]:2016/01/21(木) 08:57:05.89 ID:gmF2lxtT - 2004年はさすがに最近ではないだろ… Javaの歴史で見ても
「List をインデックスで回せること」に利便性を感じるかどうかってとこだよな 少なくとも今は別にって感じだな
|