ArrayListsの簡単な説明

私はプログラミングが初めてで、配列の理解の基礎を築くための簡単な答えを探しています。私はGoogleを使い、このサイトを検索しました。

少しの試行錯誤の後、私はmakeとreferenceを作成する方法を得ます。[3]のような配列は、物配列の中の4番目のものを取得します(0が最初です)。私はthing [3] .getStupupNumber()のようなことをして、thing配列の4番目のStupidNumberを取得できます。

それから、私はもっと多くのユーティリティを持つように見えるArrayListsに到達しますが、私は配列のような論理的な意味を持ちません。私が検索するとき、私はこれを正しく見つけることができません。

私はそれに5つのものをArrayListのものを作ると言う。可能であれば、4番目のものの中の.getStupidNumber()メソッドにどうやって行きますか?私はこれを学ぶと自分で残りを学ぶことができると思います。

2
私はdownvoteを理解していません。
追加された 著者 Alexander Pogrebnyak,
より多くの部屋が必要な場合にのみ、それがどのように成長するかは、実装に依存し、未指定です。
追加された 著者 Dave Newton,
@jliいいえ、容量を超えていない場合でも、容量と成長はAPIの一部として定義されていません。
追加された 著者 Dave Newton,
@ jliいいえ、あなたはしませんが、それは上限を持つのに役立ちます。新しい項目を追加するときに新しい配列などを割り当てますが、一般的にはそうではありません。容量を超えた場合(実装にもかかわらず)に発生します。それが「アイテムを追加したとき」と言っているのは、まれですが、誤解を招くことです。 可能かもしれません。しかし、一般的にそうはなりません。とにかく多くのものをダンプすることを知っているなら、確実なキャッシュを呼び出して再割り当てを避けることができます。
追加された 著者 Dave Newton,
あなたの元の声明はそれとはかなり違っていますが、どういうわけか私はそれを誤解しました。
追加された 著者 Dave Newton,
追加された 著者 Brian Roach,
@AlexanderPogrebnyak - 下向き矢印の上にマウスを置く。 研究努力 arraylistを使用してGoogleに表示されるのは約475,000ページのみです。
追加された 著者 Brian Roach,
Javaでは、 ArrayList 型は新しい配列を実際に割り当てて、新しい項目を挿入するときに古い内容をコピーするので、必ずしも使用するのが最善のことではありません。
追加された 著者 jli,
@DaveNewtonあなたが最初の容量を知っていればそれはしませんが、それを知っていれば配列を使うことができます。
追加された 著者 jli,
あなたが別のコンストラクタを呼び出して初期容量を設定しない限り、@DaveNewtonのデフォルト容量は10です。そうすれば、最初の容量を知る必要があります。
追加された 著者 jli,
@DaveNewton私が言っていることは、どれくらいのことを知っていれば、そのサイズの配列を作ることができるということです。
追加された 著者 jli,

3 答え

StupidThingというクラスがあるとします。

class StupidThing {
    int getStupidNumber(){return 1;}
}

List list = new ArrayList(); 
// This list represents a list of Object. It can hold only object. 
StupidThing stupidThing = new StupidThing();

あなたはStupidThingsの配列を持ちたいと思っています。 stupidThingを配列に追加できます。

list.add(stupidThing); 

listはオブジェクトの配列を表していることに注意してください。したがって、list.get(0)は最初のstupidThingをObjectとして返します。 StupidThingのメソッドを呼び出すには、返されたオブジェクトをStupidThingにダウンキャストする必要があります。

int stupidNumber = ( (StupidThing) (list.get(0)) ).getStupidNumber(); 

「ダウンキャスト」が気に入らない場合は、代わりにStupidThingのリストを使用することができます。

List list = new ArrayList(); 
// Now list can only hold instances of StupidThing  
StupidThing stupidThing = new StupidThing();
list.add(stupidThing); 
int stupidNumber = list.get(0).getStupidNumber();
3
追加された
ありがとうございました! (5つ以上行く...)
追加された 著者 Jeremy,

ArrayList ( and List in general ) has a positional get method, which acts essentially the same as [] array operator.

ArrayList list = ...;

list.get(3).getStupidNumber( );
0
追加された
これは私が欲しがっていたものです。多くの感謝です!
追加された 著者 Jeremy,

You need to learn about genericity. see Generics in Java

0
追加された
ありがとう、ちょっと。しかし、適切に質問に答えることを学ぶ必要があります。私は質問で指定したものに簡単な答えを求め、あなたに私にリンクを与える。多分、あなたは失礼しようとしていないし、私はどちらかになろうとしていません。
追加された 著者 Jeremy,
私はあなたに答えを与えるので、少しのコードでそれを行う方法しか知りません。次回は、問題が多少異なる場合は、もう一度お聞きします。だから私は、あなたがあなたがしなければならないことについての専門用語を与えることが考えられる答えの1つであると思います。私はちょうどあなたがそれがどのように呼ばれているのかわからないときに何かを探すのが難しいことを知っているので、あなたを助けようとしていました。
追加された 著者 florian,