失礼いたします。
きっとこの質問は大勢の方が持っているのではないかと思い質問します。
自分はDBを利用した業務系のwebアプリ開発を行っているのですが、
DB情報の取得の際、その情報を何に格納するかで疑問が生じました。
例えば会社情報を検索したとして、各会社の情報はそれぞれ1つのインスタンスに持たせます。
これは会社数だけ繰り返されます。
そこで、そのインスタンスを順次何に入れるかなのですが、
型を持ったインスタンスの配列にするケースとVectorに入れるケースと両方見たことがあります。
きっと他にも方法は多種あるでしょう。
ではここで、配列(この場合インスタンスの配列)とVector、ArrayやListの使い方、またMapとCollectionなどの違いはどのように
利用するのが好都合なのでしょうか?Arrayの場合ポインタ式であることが絡んでくるでしょうか。
それとも昔から業務に固有の風習があり、この業務では習慣的にArrayとListが使われるが、
別の業務だとString[]とArrayが使われる、などのように
歴史的な理由で統一できていないのでしょうか?
全てではなくても、何らかの使われ方の違いや効率のよい
使い方の優先順位などがあれば教えてほしく思います。m(__)m
No.2ベストアンサー
- 回答日時:
私は通常は配列かなあ~
個数があらかじめわかっていないとき位しか、ArrayListは使いません。
ジェネリック(<T>)がJava5.0から実装されたので、ArrayListでも混乱することはなくなったと思いますが、
それまでは、何でも一緒に入れられたので、混乱を避けるために、
できるだけObject型に変換されてしまうクラス・メソッドは使わない
ようにする必要があったのです(instanceofのチェックだらけになってしまう(笑))
これゆえ、crumさんに言わせるところの初期の頃しか知らない人ということに(笑)
Vectorは使いません。推奨されていません。
基本的に古いJDKとの互換性にのみ残されているということのようです。
(とかいってるくせに、JDKのソースの中はVectorがたくさん出てくる(笑))
Vectorの代わりにArrayListを使います。
大きな違いは、「マルチスレッド保護の有無」と「自動拡張サイズ」でしょうか。
MapとCollectionは情報取得にキーが必要かどうかで決めればよいと思います。
>Vectorは使いません。推奨されていません。
ばっさりとした回答、ありがとうございました。
一角が消えただけでかなり検討がしやすくなりました。(^▽^)
それにしても・・うちの先輩はVector使ってたんですけどね~(謎
>MapとCollectionは情報取得にキーが必要かどうかで決めればよいと思います。
なるほど、ありがとうございます。
また、重複を許すかどうかなどでは別の手法も必要ですね。
>マルチスレッド保護の有無
う~ん、そんな違いもあるのですね。
シングルトンパターンを使っているので今回は大丈夫だと思いますが・・。
質問者側の立場で答えて頂き、短い文章の中でも学ぶものは多かったです。ありがとうございました。m(__)m
No.3
- 回答日時:
個数が分かっているなら配列(String[])を使用します
適当に作るものならArrayでも十分ですが、仕事の上ではパフォーマンスを考慮して、コストの少ない方向で判断しています
大規模になればなるほど、「塵積も」ですので
ご回答ありがとうございました。
なるほど、確かに私の携わった中で、総勢200名、3年規模の
プロジェクトでは 型名[] 配列を使っていました。
多角的な視野で考えられるアドバイスになりました。
ありがとうございます。
No.1
- 回答日時:
私は配列はほとんど使いません。
配列っぽいものを使いたいときはArrayListを使います。Java5からは総称型のおかげで、ますます配列は使わなくなりました。周りを見ても配列を使っていることはほとんどないと思います。
多くの業務プログラムで配列にすべきかArrayListにすべきかを問題視するほど速度やメモリ使用量などを気にすることはないと思うので、使いやすいArrayListなどを使ったほうがいいと思います。
もちろん問題視される場合もあるので、そのときは改めて調査して、どちらにすべきか考えればよいだけです。
また、もし速度などが問題になったとき、Listインタフェースを実装しているほかのコレクションクラスにすることも容易です。
業務固有という話はあまり聞きません。こんな言語レベルの話が業務に影響するとも思えません。
そのプロジェクトの歴史的な理由はあると思います。とくにJavaの初期の頃しか知らない人が携わっていたとか、そもそもJavaを知らない人がメインのプログラマだったとか・・・。
すいません、Collection Framworkの内容については調べてください。
>Javaの初期の頃しか知らない人が携わっていたとか、そもそもJavaを知らない人がメインのプログラマだったとか・・・。
ありえます!
継承なんかも親、子、孫、ひ孫まで使っているプロジェクトを見たことがあります。もう、どこに何が入っているのか・・
せめて3段階くらいにして欲しい・・
>Java5からは総称型のおかげで、ますます配列は使わなくなりました
そうなんですね。
ではこれからはArrayList<型>が主流になるのでしょうか。
ただ、対応していないシステムが数年、数十年は残り続けるのでしょうね。
しかも未だにjava1.3.1を使っているので・・(化石
しっかり本番のバージョンは確認しないとな~と、一介のPG/SEとして思います。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
csvファイルを2次元配列に格納
-
配列
-
【C#】ハッシュテーブル(連想...
-
cloneメソッドについて (java)
-
配列の中に複数存在する数がい...
-
負の整数になるまで入力→その平...
-
多次元配列のソートがうまくい...
-
javaでEUC-JP文字列→UTF-8への変換
-
配列について
-
C++で、Excelの内容を取得する...
-
Javaで文字を漢字であるか否か...
-
javaについて
-
2次元の配列となっているクラ...
-
セッションを使ったint型の値の...
-
java
-
JavaBeansの配列の値取得方法に...
-
[Ljava.lang.Stringってなんですか
-
C言語でunsigned char配列を連...
-
JAVAで配列の要素に、負の値が...
-
sqlparamaterでIN句を使いたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#】ハッシュテーブル(連想...
-
Javaで文字と数字が混ざったも...
-
[Ljava.lang.Stringってなんですか
-
この警告はどうすれば?
-
main(String[] args) の args...
-
C言語でunsigned char配列を連...
-
配列で、値の入っている要素数...
-
C#で動的配列Listの中身をListB...
-
javaで大容量テキストファイル...
-
javaについて
-
javamailで複数人にメールを送...
-
java
-
同じ配列またはクラスを、2回...
-
ページング
-
動的配列確保
-
Javaで文字を漢字であるか否か...
-
csvファイルを2次元配列に格納
-
セッションを使ったint型の値の...
-
javaでEUC-JP文字列→UTF-8への変換
-
『args[]』とは?
おすすめ情報