- 1 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 22:35:19.67 ID:XG+QDGZC.net]
- プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 (p)ttp://www.wikiroom.com/java/?path,classpath ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 ・String に == は使うな。equals() を使え。※ 質問時の心得 ・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。 ・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。 前スレ ★★Java質問・相談スレッド172★★ peace.2ch.net/test/read.cgi/tech/1419490897/
- 620 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 10:11:04.72 ID:FJaoXbZH.net]
- オブジェクト指向の考え方の一つにコードの再利用があって、その考え方を実践するための機能に継承や多態性があるんでしょ?
- 621 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 19:58:49.52 ID:eiMDqtUU.net]
- 多態とオブジェクト指向はシミュレーションが主用途だった頃の発明
コード再利用はそれを再発見したドカタのスローガン
- 622 名前:433 [2015/05/26(火) 20:53:28.97 ID:nLpsmWXi.net]
- >>598
1行目はよく分からんが、2行目は吹くほど笑
- 623 名前:った。言い得て妙だね
まあ>>597みたいな奴がまだキリンさんクラスとか動物クラスとか 言っているんだろうけどねぇ [] - [ここ壊れてます]
- 624 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 21:03:09.66 ID:DZ6Zizra.net]
- 多態による再利用はオブジェクト指向らしい設計を維持するためにも重要だよ
9割共通で1割違うクラスが複数あるときCOBOLみたいにクラスを丸コピぺしたり 猿のように条件分岐するのはオブジェクト指向的ではない
- 625 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 22:00:54.05 ID:L0L5JUGf.net]
- 「(犬と人間が来て)哺乳類ならならとりあえず『歩け』っていえば歩くだろ。それぞれがどういう風に歩くかは知らん」
「(LinedListとArrayListがList型変数に渡されて)Listならとりあえずgetって書けば取り出せるだろ。実装がどうなってるかは知らん」 オブジェクト指向=多態ではないけれど、オブジェクト指向の実現方法の一つであることは間違いないよな
- 626 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 22:15:02.71 ID:DZ6Zizra.net]
- LinkedListとArrayListが両方Listなのは設計ミスだけどね
Listがランダムアクセスをサポートしてるかどうかは実装依存というクソ仕様
- 627 名前:433 [2015/05/26(火) 22:33:08.26 ID:nLpsmWXi.net]
- >>601
ちっとばかしシックリこないけど、ほとんどの人がその程度の理解があれば 少しは状況がちがったのかも get より equals の方が例としてはよかったのでは?
- 628 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 22:36:26.74 ID:aGxSVLPT.net]
- そんな使い古されたバズワードで議論とは若いのお…
- 629 名前:433 [2015/05/26(火) 22:40:00.14 ID:nLpsmWXi.net]
- なんか日本語が変
ちっとばかしシックリこないところもあるけど、 ほとんどの人が、その程度の理解であれば 状況は全然違ったのかも ただ、馬鹿が多いから 「オブジェクト指向の実現方法の一つである」を 「ポリモーフィズムにすりゃオブジェクト指向になるだろ」に 勘違いする
- 630 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 22:46:16.60 ID:DZ6Zizra.net]
- と、「カプセル化してりゃオブジェクト指向になるだろ」が持論の方が仰っております
- 631 名前:433 [2015/05/26(火) 22:51:36.38 ID:nLpsmWXi.net]
- >>606
そんな馬鹿が社内に居れば、説教部屋行きだなw
- 632 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 23:15:18.78 ID:UiDv1Vcu.net]
- >>602
一応RandomAccessインターフェースがあるけどね
- 633 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 00:43:56.26 ID:Gahj6sEf.net]
- >>607
あなたにその権限があったとしても、 あなたの教えを受けて考えを変えようと思う方はいません 残念でした
- 634 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 01:54:55.02 ID:esbmy2lw.net]
- 本当に多態がOOPに重要と思うなら、君はカプセル化や継承という「枠」を主軸とするもう一つOOPの人だよ
そもそも原理主義から見たら、多態なんて概念は瑣末な物だからねえ 受ける相手がいなくても良いんだから
- 635 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 04:44:13.95 ID:FB4uk7Yf.net]
- じゃあJavaで継承と多態性を一切使わずにプログラム組んでみろよ
絶対わけわからんことになるから
- 636 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:06:47.39 ID:Bw6jp1Et.net]
- コード書いて見せてよ
- 637 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:44:43.43 ID:esbmy2lw.net]
- >>611
別にわけわからん事にはならんよ 継承は移譲、多態もキューと分岐で十分 原理主義の方は、型キャストによる多態はしないね たまにそれも多態とか宣う困った人がいるけど
- 638 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:45:46.73 ID:esbmy2lw.net]
- 書き換えて欲しいなら元コード出しておくれ
- 639 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:50:14.28 ID:w5e0eq0t.net]
- 多態はSimulaの頃からある必須概念だぞ
- 640 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:50:28.96 ID:esbmy2lw.net]
- すまん、やっぱり何書いても突っ込まれそうだからやめる
- 641 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:51:48.26 ID:esbmy2lw.net]
- >>615
Simulaにおいてもタイプシステム上の概念だよ 型が前提
- 642 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:57:34.51 ID:w5e0eq0t.net]
- 多態というのが君の中でどう定義されてるのかは知らないが、
一般的に多態というと一つの操作に対し複数の
- 643 名前:型の実装が呼び出されることをいう
型ベースかダックタイピングかなんて本質的でない区別はしないよ [] - [ここ壊れてます]
- 644 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 07:04:55.95 ID:esbmy2lw.net]
- そういうタイプシステムで、動的バインディングするのが多態で
オブジェクト指向を提唱した人が言ってたのは、もっと上位の概念 アクターモデルとかの話で、源流のOOPではないんだよ
- 645 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 07:10:40.70 ID:w5e0eq0t.net]
- で、>>611のいう継承と多態性にいつ「OOP原理主義における」の条件が付いたんだ?
少なくともJavaでの一般的な言葉においては、多態の実装には継承かインターフェースかリフレクションが必須
- 646 名前:616 mailto:sage [2015/05/27(水) 07:11:21.47 ID:w5e0eq0t.net]
- すまん訂正
多態の実装には→移譲の実装には
- 647 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 07:14:19.07 ID:esbmy2lw.net]
- >>620
その制約って多態の実装をせずに多態を実装しろって矛盾した話でしょ? 何言ってるんだか
- 648 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 07:16:09.21 ID:esbmy2lw.net]
- 移譲の実装にはどれも要らないよ
やってみせようか?
- 649 名前:616 mailto:sage [2015/05/27(水) 07:19:07.89 ID:w5e0eq0t.net]
- ああ移譲って単に直接別のクラスのメソッドの実装を呼び出すことを言ってたのか
移譲で継承を代替できるから多態は不要という意味不明な話かと勘違いしてたわ、すまん
- 650 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 07:56:47.91 ID:FB4uk7Yf.net]
- >>613
それコード長くならない? オブジェクト指向プログラミングの目的の1つにコード短くするためっていうのがあるけど
- 651 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 07:59:04.16 ID:RZsA/U1h.net]
- Javaではclassを宣言しなければプログラムは書けない。
classを宣言するとjava.lang.Object classが必ず継承される。 終了。
- 652 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 08:05:20.08 ID:FZwjLvvv.net]
- >>626
Java8ならw ideone.com/yuBUHb interface Main { public static void main (String[] args) { System.out.println("ぬるぽ"); } }
- 653 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 08:23:17.86 ID:esbmy2lw.net]
- >>625
長くはなるかもしれないけど、どちらのOOPも短くするなんて目的はないと思う それより1つもあらゆる動的バインディングを伴わないという制約は 完全に密結合になるし、今時の大規模開発では無理だね それでも構造化は十二分にできるから、「わけわからない」とはならないよ
- 654 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 08:25:02.92 ID:esbmy2lw.net]
- >>626
はいはい そう言う屁理屈いう奴絶対出ると思った
- 655 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 13:47:09.46 ID:kpUvErGB.net]
- >>625
コード短くするためってのはないよ シンプルにすることはあっても短くすることは目的じゃない わかりにくくなったら保守性も下がるし意味がない 変数名やメソッド名はむしろ昔より長くなってるでしょ
- 656 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 19:24:45.82 ID:LZL2gy1L.net]
- Twitter4jを使って特定のアカウントが凍結されているか確認する方法はないですかね?
迷惑垢拡散アカウントと持っているので拡散した垢が凍結されているかを確認したいです。
- 657 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 21:01:57.94 ID:w5e0eq0t.net]
- >>631
Twitter4jじゃなくて本家のREST APIのドキュメントを読め そこに無ければ無いしあるなら直接それ使えばいい
- 658 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 02:29:42.27 ID:uibzkFZp.net]
- >>602
どういうこと?ランダムアクセスってインデックスによるアクセスってこと?それなら、LinkedListも内部トラバースするけどインデックスアクセスできるっぽいけど
- 659 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 04:06:57.38 ID:tKwlXHJ9.net]
- ↓これマジ?
techtarget.itmedia.co.jp/tt/news/1505/08/news03.html >パッチ未適用率が約8割のバージョンもJavaは“最も危険なソフトウェア”
- 660 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 04:09:22.28 ID:7nXufysT.net]
- いろいろなオブジェクト指向言語のお手本になってるSmalltalkでも
- 661 名前:継承はあるじゃない
C++だって継承がある 継承の機能のないオブジェクト指向言語の方がすくない 継承がなくて委譲で継承のようなことやるってGo言語使いかな? [] - [ここ壊れてます]
- 662 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 05:13:26.64 ID:tv7QNGPA.net]
- >>635
Smalltalkは別だよ C++と一緒にしてる時点で知らないと言ってるようなもん 簡単に言うとJavaScriptのような継承
- 663 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 06:07:52.40 ID:8cEiN+lf.net]
- >>633
LinkedListのgetは毎回先頭から要素を舐めるので、うっかり for (int i = 0; i < list.size(); i++) list.get(i); なんてことをやろうものならO(N^2)だ 仮にアプリの作りがまずくて、アプリへの要求の仕方によって 悪い奴が意図的にこのクソ重いループを実行させる方法があるなら、 アプリのDoS脆弱性と言われても仕方ないレベル
- 664 名前:デフォルトの名無しさん [2015/05/28(木) 07:45:57.12 ID:/AhuPFHmC]
- 多相性には部分型多相しかないと思ってるバカどもの迷子センターになってるな
- 665 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 10:01:39.86 ID:DciKDkXU.net]
- >>637
最近おぼえたんでちゅか? すごいでちゅねー
- 666 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 17:55:54.70 ID:r2p1JjMc.net]
- テキストエリアでwin標準?のポップアップメニュー(Janeのメモ欄で右クリックしたら出てくる奴)を使う事できないの?
- 667 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 17:57:14.08 ID:8cEiN+lf.net]
- さっさとSWTに乗り換えましょう
- 668 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 19:55:35.42 ID:yXcYN23r.net]
- >637
ArrayListにもデメリットがあること、用途に応じて使用するリストを選ぶべきことまで踏まえた上で「LinkedListはクソ」って言ってる? 昨今のハードの高性能化もあってほとんどのケースでArrayListで事足りるってだけで、LinkedListにはそれなりの使い道もあるんだけど ランダムアクセスできて、要素の削除やリストサイズの拡張にコストがかからなくて、メモリも最小限しか使用しないリストの実装があると言うのなら是非紹介して欲しい つーかLinkedListって、いわゆる「リスト」の構造に最も忠実だと思うんだが。どちらかと言えばArrayListの方がイレギュラー
- 669 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 20:18:32.34 ID:8cEiN+lf.net]
- >>642
「LinkedListはクソ」じゃなくてインターフェイスの設計が間違ってると言ってるんだよ。 ただList<T>を受け取っても、それがgetを(実用的に)サポートしてるかどうかは型チェックしてみないとわからない。 オブジェクト指向の設計として明らかに破綻している。 そりゃあまり重要でない性質ならわざわざ型で区別しないことも多いけど、 「インデックスによるランダムアクセスをサポートしているかどうか」というのはコレクションにとって極めて重要な性質。 それに対して、IterableやCollectionになくてListにあり、かつ実装依存でない性質って 「要素を順方向、逆方向に辿れる」だけ。そんなの、ランダムアクセスの可否に比べればほとんど役に立たない。 ちなみに後発の.NETではその失敗からListはランダムアクセスのためのインターフェイスと定義され、 LinkedListはListを実装しない。
- 670 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 20:48:02.43 ID:r2p1JjMc.net]
- (L)GPLライブラリってとりあえずソース公開すればいいの?
- 671 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 20:59:07.97 ID:yXcYN23r.net]
- >>643
いやいやいや、Listの下にRandomAccessListインターフェースを作れって話なら分かるけど、 最も抽象的な概念であるListにランダムアクセスを強要しろってのはねーわ。何のための抽象化? LinkedListがListを継承しないってことは、それこそ君の言うようなDoS脆弱性()が発覚した時にさあLinkedListからArrayListに変えましょうってなったとき、
- 672 名前:ロ々ソースを書き変えなきゃいけなくなるわけだけど。概念的な機能が同一のものを同一に扱わないってのはそれこそオブジェクト指向的じゃないでしょ []
- [ここ壊れてます]
- 673 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:00:57.98 ID:Yt09KnaV.net]
- 屑哲とは何ですか
- 674 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:19:05.95 ID:8cEiN+lf.net]
- >>645
で、実際ListIteratorを使ったことある?
- 675 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:30:16.79 ID:yXcYN23r.net]
- >>645
Iteratorは使ったことあるけど、それがどうした? 「順次にアクセスしたいときはArrayListにIterator使えばいい」とでも言うのか? IteratorとListは全く別のものだし何が言いたいのか分からんわ
- 676 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:36:29.41 ID:8cEiN+lf.net]
- ListIteratorはIteratorは別のもので、Listをリスト足らしめている根源なんだけど、
そんなことも知らないでListの概念云々言ってたの?
- 677 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:43:15.77 ID:DciKDkXU.net]
- バカ過ぎる
- 678 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:44:00.41 ID:yXcYN23r.net]
- >ListIteratorはIteratorは別のもので、Listをリスト足らしめている根源なんだけど、
え?じゃあListIteratorを取得可能なLinkledListはリスト以外の何物でも無いじゃん…
- 679 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:53:47.84 ID:8cEiN+lf.net]
- >>651
そうだよ。だからListIteratorを使ったことがあるかと聞いてるの。 ないならgetの付いたCollectionとしてしかListを使っていないことになるから、 即ちランダムアクセスのできないListには意味がないということ。 とはいえ実際にはCollectionsの各種アルゴリズムの実装などでListIteratorは内部的に活用されてるので、 決して意味がないわけではないんだけどね。 ただ程度問題として、比較的使用頻度の低いリンクリストのために多くのユーザーにとっての利便性を非常に大きく損なう設計にするのは 適切だろうか、ということ。 Javaが内部的に使ってるだけなら結局Oracleが頑張ればいいだけだしね。
- 680 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:00:23.19 ID:yoCp6Uc+.net]
- ここでグダグダJavaの設計について言うのは適切じゃないと思うけどな
- 681 名前:デフォルトの名無しさん [2015/05/28(木) 22:04:44.84 ID:+ywrUonY.net]
- >>653
そうだな。 pbs.twimg.com/media/CFrlOXAUgAAE8p2.jpg
- 682 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:09:54.26 ID:yXcYN23r.net]
- >ないならgetの付いたCollectionとしてしかListを使っていないことになるから、
>即ちランダムアクセスのできないListには意味がないということ。 そういう結論が出るに至る過程が全く分からんな、バカだから。 CollectionにもIterableにもgetが無い以上、getがあることには意味があるとしか思えんわ。 ランダムアクセスできるかどうかってようはパフォーマンスの問題であって、機能の問題ではないだろ? 「バブルソートはオーダーが高いからソートアルゴリズムとして扱うな(そっちの方がユーザにとって利便性が高い)」って言ってるようにしか見えんわ
- 683 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:16:25.52 ID:yXcYN23r.net]
- それと、百歩譲って「Listはランダムアクセスをサポートすべき」だとしても、それが中間的なインターフェースによる実現(RandomAccessInterfaceの実現)ではだめで、
LinkedListをListから外すしかない理由を説明してくれ。
- 684 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:18:43.06 ID:8cEiN+lf.net]
- >>655
いや、パフォーマンスを問題にしないならそもそもLinkedListなんて必要ないじゃん… 「LinkedListは必要である」という前提で話をする以上、パフォーマンスは無視できないよ
- 685 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:19:41.55 ID:58xt6n/s.net]
- おい、馬鹿
おのれは言いたいことを一レスにまとめるということができんのか アスペルガーじゃあるまいし、無駄にスレ消費すんな
- 686 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:26:26.57 ID:yXcYN23r.net]
- >>657
パフォーマンスを「リストと言うデータ構造」に対して保証する必要があるのか?って話なんだけど LinkedListはデータ構造としてのリストの機能を十分に満たしてるよね? それパフォーマンスを問題にしないなら「LinkedListが」必要でなくなる理由は? パフォーマンス一切無視ならランダムアクセスするリストも連結リストも等価だよね?
- 687 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:40:21.15 ID:8cEiN+lf.net]
- >>659
関数型ならともかく、普通Javaみたいな言語で特にパフォーマンス気にしないときとりあえずArrayList使うでしょ。 あえてLinkedListを使うのは特にパフォーマンスを意識している場合だろ? その作法はパフォーマンスの面でも正しい。 なぜなら、一般的には連続
- 688 名前:アクセスや最後への追加削除と比較して、途中への挿入削除の頻度は低いから。
もしどっちかに統一するとすれば、全体としてはArrayListの方が間違いなく速い。どちらか選ぶなら答えは明らか。 [] - [ここ壊れてます]
- 689 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:54:10.73 ID:8cEiN+lf.net]
- つまりLinkedListを使うときっていうのは、
そのアクセス効率の悪さ(getは論外だけど、Iteratorも遅いよ)やメモリ使用量の多さ、GCへの負担を受け入れてもなお メリットがあるほど挿入削除が多いことがわかっている場合というわけ。 それほどまでにパフォーマンスに配慮しながらgetは気にしないなんてありえないよね?
- 690 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 23:03:15.36 ID:yXcYN23r.net]
- >>660-661
ほとんどの場合においてArrayListを使えば事足りると言うのはその通りだし、LinkedListの用途についても俺もその認識だ。 しかしその答えから「Listはランダムアクセスを保証すべき(LinkedListはListに含まれないべき)」理由が俺には分からないし、 >もしどっちかに統一するとすれば、全体としてはArrayListの方が間違いなく速い。どちらか選ぶなら答えは明らか これは『どちらかしか使えなくなるとしたら』ArrayListにした方が上手くいくという話であって、「パフォーマンスを一切考慮しないなら」ArrayListにすべき理由じゃない。 たぶん言葉の認識の違いだと思うんだが、俺は「パフォーマンスを一切考慮しない」というのを入力に対する出力(そのプログラムが持つ機能、用途)しか考慮しないという意味で発言してる。 そして俺は機能が全く同じなら同じクラス・インターフェースにまとめるべきだと思う。よって俺にはLinkedListとArrayListは同じListとして考える方が自然だとしか思えない。(それを使うかどうかはまた別) パフォーマンスが違っても用途が同じものを敢えて置換できないようにする意味はどこにあるんだ?
- 691 名前:デフォルトの名無しさん [2015/05/28(木) 23:18:19.94 ID:bXGZB0T7.net]
- IDEのコード補完でクラスをインポートするときに
JDKに同じ名前のクラスがあるとうっとうしい Java9のモジュールシステムでjava.awt.Listとか クラスパスから除外できるようになりますか?
- 692 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 23:20:27.08 ID:+atrdthn.net]
- gnu class path は今はどうなっているの?
- 693 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 23:53:09.70 ID:tv7QNGPA.net]
- 横槍ですまない
>>662 >そして俺は機能が全く同じなら同じクラス・インターフェースにまとめるべきだと思う。よって俺にはLinkedListとArrayListは同じListとして考える方が自然だとしか思えない。(それを使うかどうかはまた別) おっしゃる通り、プログラマがListと言う時はLinkedListを指すのだから、 その話しぶりでは、設計は間違いだが変更は不可、って結論じゃなきゃおかしいよ それとこの手の後付の共通化を受け入れる人が多いが、これ間違いと思う 「異なる物を同一のものとして扱う」という概念への誤謬 同じ粒度の異なる物を別の抽象に無理に合わせても、 インターフェース以外の中身はその抽象には程遠い 本来は一つ下の粒度の物を適切に使い、抽象に合う物を組み立てなおすべき 極端に言えば、アダプタパターンは悪い妥協、かつアンチパターンだと思う
- 694 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 00:53:09.71 ID:itAy1lMg.net]
- 見ず知らずの人たち相手にOOPについて議論するとどんなメリットがあるの?議論することそのものを楽しんでいるだけ?
- 695 名前:デフォルトの名無しさん [2015/05/29(金) 01:51:22.68 ID:xnuOOQOC.net]
- ツリーイテレータは無いのだろうか。
- 696 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 03:56:18.50 ID:e13wdj/j.net]
- やり取りできるメッセージ(インタフェース)が一緒でも、性能が違ったら同じインタフェースにするべきでないって話?
それ、実装が違えば性能違って当たり前なんだから、インタフェースの意味ないね。 大きく違うからとか、主観の話かな。
- 697 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 04:07:17.19 ID:AdYurFH0.net]
- >>602
言いたいことはわからんでもないけど > 両方Listなのは設計ミス は言い過ぎだろ Listがget(int)を持つのは、順序付けられたCollectionだからだよ Listの要素は順序を持つ だからn番目の要素にアクセスするメソッドがある 逆にCollectionにgetが無いのは順番を
- 698 名前:K定しないから []
- [ここ壊れてます]
- 699 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 04:33:38.32 ID:JPuBr0K9.net]
- 初心者なんだけど、ArrayListとLinkedListって、addやremoveしまくりたいときはLinked使って、getしまくりたいときはArrayを使うって覚えてたんだけど、違ったの?
- 700 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 07:09:05.85 ID:GbyQSdJL.net]
- >>670
間違い ほとんど全ての場合でArrayListの方が性能が良いので、基本的にLinkedListは使わず常にArrayListを使う。 どうしてもボトルネックになってるコレクション操作の箇所がある→どうやら途中への挿入or削除が原因のようだ →LinkedListに変えてみたら解消した これだけでいい
- 701 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 07:13:21.03 ID:g6fbSoL/.net]
- >>668
同じ操作になるから意味はあるよ いくら実装が違うからと言って、モデリングが間違ってたら駄目だって事さ 無理やり共通化するのを良しとすると、極論的に正常動作でなくても、 インターフェースさえ付いてれば良い事になってしまう
- 702 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 07:24:06.99 ID:GbyQSdJL.net]
- 単純に、利用者のミスを生みやすい設計はよくないって話だよな
Mapが渡ってきたらgetは直感的にO(1)、遅くてもO(log(N))くらいだと期待するだろ? Map#getよりも一見処理の軽そうなList#getがO(N)になりうるのは直感に反する
- 703 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 12:13:40.31 ID:RzAd5Uvp.net]
- LinkedListってListIterator使わないなら途中への挿入削除は結局検索のせいでO(N)なので
オーダー的にArrayListより速いといえるのは先頭への追加削除だけという間抜けな設計なんだよね ListIteratorはリストが変更されると無効になるからカーソルとして保持するのはやりたくないし ListIteratorのアイデアに固執せず単純にListNodeを公開してくれるだけでよかったのにな
- 704 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 13:50:34.41 ID:2KbtQEek.net]
- 初歩的なことですいません。
import javax.bluetooth.LocalDevice; これをeclipseで記述すると赤線でエラーになるのですが 何が足りなくてどう記述すればよいのでしょうか?
- 705 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 14:14:27.92 ID:2KbtQEek.net]
- 自己解決しました。
- 706 名前:デフォルトの名無しさん [2015/05/29(金) 14:16:56.43 ID:AQuaH7cx.net]
- synchronizeについて教えてください。下記のコードでメソッドにsynchronizedを行っていますが、
変数mapは排他がかかるでしょうか?それともメソッドにsynchronizedを行ってもダメで変数mapそのものにsynchronizedするべきでしょうか? ※前提条件 ・getData()は外部のスレッドから一定周期で呼ばれる。 ・setData()は内部のスレッド(SubThread)から一定周期で呼ばれる。 public class Common{ private HashMap<String,String> map = new HashMap<String,String>(); public static void main(String args[]){ SubThread sub = new SubThread(); } public synchronized HashMap<String,String> getData() { return map; } private synchronized void setData(String data1, String data2) { map.put(data1,data2); } private class SubThread extends Thread{ String strData1 = "Data1"; String strData2 = "Data2"; public void run(){ setData(strData1,strData2); } } }
- 707 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 14:36:16.58 ID:e13wdj/j.net]
- >>672
そういうことじゃない。 実装ごとにわけるのなら、抽象化はされず、1実装に1インタフェースとなる。
- 708 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 14:46:16.67 ID:GbyQSdJL.net]
- >>677
getDataがmapを晒すと外から自由に排他なしでアクセスできてしまうからダメ 排他云々以前にコレクションをクラス外にそのまま出すのはpublicフィールド晒してるようなもんだから、 getDataは引数にキーを受け取って値を返す仕様にするべき それならそのコードの排他は正しく機能する
- 709 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 16:01:19.97 ID:b5ZezYht.net]
- Java初心者です。
jarファイ
- 710 名前:汲フexe化がうまく行きませんのでお知恵を拝借したいです。
exewrapでjarファイルをexe化しようとすると、 "Native executable java application wrapper.は動作を停止しました"とダイアログが表示されて途中で止まってしまいます。 jsmoothも試してみたのですが、"Saving exe..."のステップから進まなくなります。 jarファイル単体では普通に動作するのですが、これはjarの中身になにか問題があるのでしょうか? OSはVista、Javaはバージョン8、notepad++で書いております。 [] - [ここ壊れてます]
- 711 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 20:11:51.79 ID:RfzJ1xHR.net]
- iniファイル解析クラス作ってみました。アドバイスお願いします。
notepad.cc/share/dObqHTeIJ8
- 712 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 20:20:52.35 ID:/O9WcZmT.net]
- >>681
せっかく正規表現使ってるんだからキャプチャ使えばいい
- 713 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 20:52:10.88 ID:RfzJ1xHR.net]
- キャプチャって何ですか?
- 714 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 21:02:39.74 ID:qddcoV7p.net]
- そもそもパフォーマンスを保証したいならListでアップキャストせず、ArrayListで受け取ればいいだけの話
そのうちObject型にも文句付けそう
- 715 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 21:41:30.09 ID:vNf0wM8U.net]
- >>681
iniフィアルなら、セクションに対応する必要があるよ
- 716 名前: ◆QZaw55cn4c mailto:sage [2015/05/29(金) 21:41:32.94 ID:bTG2Z02M.net]
- >>667
C++でイテレータパターンの演習にとトライしてみたが、なかなかうまく形にならない‥
- 717 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 21:43:27.41 ID:bTG2Z02M.net]
- 連続領域を必要とする ArrayList は嫌われものだと思っていたのだが、ここでは一択なんだね
今まで間違った感覚を持っていたのかな
- 718 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 00:02:38.75 ID:IDV5NAFV.net]
- ArrayListの全要素を取得するのには、forか簡易forかイテレータを使う方法があると覚えたのですが、実際の場面ではどれを使うのがいいのですか?
- 719 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 00:38:07.46 ID:86ur7FpL.net]
- foreach
- 720 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 01:43:50.24 ID:+/L2wu74.net]
- >>678
どう読み間違えたらそうなるんだよ 例えばインターフェースに期待される要件があるとして、 実装はそれを満たさなくても、言語だけの制限では型にあわせる事だけはできる けど、それは設計的には間違いでしょ
|

|