- ★★Java質問・相談スレッド173★★ [転載禁止]©2ch.net
637 :デフォルトの名無しさん[sage]:2015/05/28(木) 19:55:35.42 ID:yXcYN23r - >633
ArrayListにもデメリットがあること、用途に応じて使用するリストを選ぶべきことまで踏まえた上で「LinkedListはクソ」って言ってる? 昨今のハードの高性能化もあってほとんどのケースでArrayListで事足りるってだけで、LinkedListにはそれなりの使い道もあるんだけど ランダムアクセスできて、要素の削除やリストサイズの拡張にコストがかからなくて、メモリも最小限しか使用しないリストの実装があると言うのなら是非紹介して欲しい つーかLinkedListって、いわゆる「リスト」の構造に最も忠実だと思うんだが。どちらかと言えばArrayListの方がイレギュラー
|
- ★★Java質問・相談スレッド173★★ [転載禁止]©2ch.net
640 :デフォルトの名無しさん[sage]:2015/05/28(木) 20:59:07.97 ID:yXcYN23r - >>638
いやいやいや、Listの下にRandomAccessListインターフェースを作れって話なら分かるけど、 最も抽象的な概念であるListにランダムアクセスを強要しろってのはねーわ。何のための抽象化? LinkedListがListを継承しないってことは、それこそ君の言うようなDoS脆弱性()が発覚した時にさあLinkedListからArrayListに変えましょうってなったとき、 丸々ソースを書き変えなきゃいけなくなるわけだけど。概念的な機能が同一のものを同一に扱わないってのはそれこそオブジェクト指向的じゃないでしょ
|
- ★★Java質問・相談スレッド173★★ [転載禁止]©2ch.net
643 :デフォルトの名無しさん[sage]:2015/05/28(木) 21:30:16.79 ID:yXcYN23r - >>640
Iteratorは使ったことあるけど、それがどうした? 「順次にアクセスしたいときはArrayListにIterator使えばいい」とでも言うのか? IteratorとListは全く別のものだし何が言いたいのか分からんわ
|
- ★★Java質問・相談スレッド173★★ [転載禁止]©2ch.net
646 :デフォルトの名無しさん[sage]:2015/05/28(木) 21:44:00.41 ID:yXcYN23r - >ListIteratorはIteratorは別のもので、Listをリスト足らしめている根源なんだけど、
え?じゃあListIteratorを取得可能なLinkledListはリスト以外の何物でも無いじゃん…
|
- ★★Java質問・相談スレッド173★★ [転載禁止]©2ch.net
650 :デフォルトの名無しさん[sage]:2015/05/28(木) 22:09:54.26 ID:yXcYN23r - >ないならgetの付いたCollectionとしてしかListを使っていないことになるから、
>即ちランダムアクセスのできないListには意味がないということ。 そういう結論が出るに至る過程が全く分からんな、バカだから。 CollectionにもIterableにもgetが無い以上、getがあることには意味があるとしか思えんわ。 ランダムアクセスできるかどうかってようはパフォーマンスの問題であって、機能の問題ではないだろ? 「バブルソートはオーダーが高いからソートアルゴリズムとして扱うな(そっちの方がユーザにとって利便性が高い)」って言ってるようにしか見えんわ
|
- ★★Java質問・相談スレッド173★★ [転載禁止]©2ch.net
651 :デフォルトの名無しさん[sage]:2015/05/28(木) 22:16:25.52 ID:yXcYN23r - それと、百歩譲って「Listはランダムアクセスをサポートすべき」だとしても、それが中間的なインターフェースによる実現(RandomAccessInterfaceの実現)ではだめで、
LinkedListをListから外すしかない理由を説明してくれ。
|
- ★★Java質問・相談スレッド173★★ [転載禁止]©2ch.net
654 :デフォルトの名無しさん[sage]:2015/05/28(木) 22:26:26.57 ID:yXcYN23r - >>652
パフォーマンスを「リストと言うデータ構造」に対して保証する必要があるのか?って話なんだけど LinkedListはデータ構造としてのリストの機能を十分に満たしてるよね? それパフォーマンスを問題にしないなら「LinkedListが」必要でなくなる理由は? パフォーマンス一切無視ならランダムアクセスするリストも連結リストも等価だよね?
|
- ★★Java質問・相談スレッド173★★ [転載禁止]©2ch.net
657 :デフォルトの名無しさん[sage]:2015/05/28(木) 23:03:15.36 ID:yXcYN23r - >>655-656
ほとんどの場合においてArrayListを使えば事足りると言うのはその通りだし、LinkedListの用途についても俺もその認識だ。 しかしその答えから「Listはランダムアクセスを保証すべき(LinkedListはListに含まれないべき)」理由が俺には分からないし、 >もしどっちかに統一するとすれば、全体としてはArrayListの方が間違いなく速い。どちらか選ぶなら答えは明らか これは『どちらかしか使えなくなるとしたら』ArrayListにした方が上手くいくという話であって、「パフォーマンスを一切考慮しないなら」ArrayListにすべき理由じゃない。 たぶん言葉の認識の違いだと思うんだが、俺は「パフォーマンスを一切考慮しない」というのを入力に対する出力(そのプログラムが持つ機能、用途)しか考慮しないという意味で発言してる。 そして俺は機能が全く同じなら同じクラス・インターフェースにまとめるべきだと思う。よって俺にはLinkedListとArrayListは同じListとして考える方が自然だとしか思えない。(それを使うかどうかはまた別) パフォーマンスが違っても用途が同じものを敢えて置換できないようにする意味はどこにあるんだ?
|