質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

2回答

937閲覧

java.util.ArrayList クラスの利用について

nemuiyo

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/04/14 07:25

編集2019/04/14 07:27

以下のソースファイルの上から5行目、array=new ArrayList<String>(); の()に数値を指定しない場合は、初期サイズは10としてリストが作成されると習いましたが、いまいち意味がわかりません。以下のソースファイルには12の要素数が格納され、エラーもでません。初期サイズの意味とはどういったことでしょうか?

import java.util.ArrayList; class Sample2_0{ public static void main(String[] args){ ArrayList<String> array; array=new ArrayList<String>(); array.add("ねずみ"); array.add("うし"); array.add("とら"); array.add("うさぎ"); array.add("たつ"); array.add("へび"); array.add("うま"); array.add("ひつじ"); array.add("さる"); array.add("とり"); array.add("いぬ"); array.add("いのしし"); System.out.println(array.get(0)+" "+array.get(11)+" "+array.size()); } }

**
実行結果**
c:\sample\chap02>javac Sample2_0.java

c:\sample\chap02>java Sample2_0
ねずみ いのしし 12

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/04/14 07:32

どこでどのように習ったのでしょうか。また根拠資料はありますか?
退会済みユーザー

退会済みユーザー

2019/04/14 07:39

提示のコードだと サイズ12、キャパシティ20ですけどね JavaDoc をよめば理解できると思います。 できなかったらその記述を質問に追記してください。 mts10806 デフォルトコンストラクタ(引数なし)のJavaDocとかになかったけ→初期値10
guest

回答2

0

ArrayListは内部では配列を使って要素を管理しています。
「初期サイズが10」というのは、この配列の初期の長さが10ということです。
つまり、ArrayListが要素管理用の配列として次のような配列を用意するということです。

java

1Object[] elements = new Object[10];

これとは別に「Listとしてのサイズ」も保持します。現在要素は1つも入れていないため「Listのサイズ」は0です。

addなどのメソッドで要素を追加する場合、この配列に要素を入れていきます。例えば例として出ているコードでは、

java

1array.add("ねずみ"); 2array.add("うし"); 3array.add("とら");

まで実行すると、上記elementsの配列の中身は次のようになります。

java

1["ねずみ", "うし", "とら", null, null, null, null, null, null, null]

このまま追加していくと、10個目の"とり"を入れた時点で配列が満杯になり、次の"いぬ"が入れられなくなるように見えます。しかし、その時はArrayListの方が自動的にこの配列を大きくします。正確には、よりサイズを大きくした配列を作成し、それまでの要素を新しい配列にコピーして使います。

他にも、上記の3つ入った状態のListにおいて、"ねずみ"と"うし"の間に"ねこ"を入れる(array.add(1, "ねこ")を実行する)場合、"うし"以降の要素を1つ右にずらすということをやりますし、逆に"うし"を削除する(array.remove("うし")を実行する)場合は、空いたスペースを詰めるため"とら"を左にずらすということをやります。そういった「管理スペース」なのです。

投稿2019/04/14 14:05

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nemuiyo

2019/04/15 15:51

ご教示いただきありがとうございました!
guest

0

ArrayListの基本要素数は10ですが要素数を超える要素が追加されても別にエラーにはなりません。
しかし、初期のサイズを超える場合は、拡張処理が入り動作が遅くなる感じのようです。
でも、この辺は別に気にしなくていいのではないかと思います。

投稿2019/04/14 08:09

poponz

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nemuiyo

2019/04/15 15:51

ご教示頂きありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問