失礼いたします。
きっとこの質問は大勢の方が持っているのではないかと思い質問します。
自分は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で質問しましょう!
似たような質問が見つかりました
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(セキュリティ) 役所など、情報系システムのセキュリティが弱くても業務システムに問題ないか 3 2022/11/02 16:38
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- 正社員 守秘義務違反と守秘義務の具体的対象 3 2023/06/15 22:55
- その他(セキュリティ) 匿名チャットアプリでの知られたくない会話 個人情報について 1 2023/03/29 18:08
- ハッキング・フィッシング詐欺 スマホアプリのトラッキング 個人情報について 5 2023/03/31 08:16
- その他(セキュリティ) 匿名チャットアプリ トラッキング 個人情報について 1 2023/03/29 20:35
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- 事務・総務 営業事務、契約外のお仕事? 5 2022/06/18 22:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
『args[]』とは?
-
[Ljava.lang.Stringってなんですか
-
javaについて
-
n番目に大きな値を探索する
-
この警告はどうすれば?
-
javaでEUC-JP文字列→UTF-8への変換
-
配列の中に複数存在する数がい...
-
配列について
-
配列で、値の入っている要素数...
-
配列をセッションに割り当てた後で
-
【C#】ハッシュテーブル(連想...
-
セッションを使ったint型の値の...
-
main(String[] args) の args...
-
java
-
Javaで文字と数字が混ざったも...
-
無名配列の作成方法について質問
-
多次元配列はなぜ必要???
-
2次元の配列となっているクラ...
-
JSPでデータ一覧表示
-
C++で、Excelの内容を取得する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[Ljava.lang.Stringってなんですか
-
この警告はどうすれば?
-
C#で動的配列Listの中身をListB...
-
javaで大容量テキストファイル...
-
C言語でunsigned char配列を連...
-
n番目に大きな値を探索する
-
JavaのBase64デコードで正しく...
-
配列で、値の入っている要素数...
-
Javaで文字を漢字であるか否か...
-
配列の中に複数存在する数がい...
-
データベースから取得したデー...
-
【C#】ハッシュテーブル(連想...
-
Javaで文字と数字が混ざったも...
-
cloneメソッドについて (java)
-
ArrayListからBean配列に値をセ...
-
配列をセッションに割り当てた後で
-
int配列をbyte配列に変換
-
セッションを使ったint型の値の...
-
javamailで複数人にメールを送...
-
【Ajax通信&Java】配列の受け取...
おすすめ情報