2016-08-03 4 views
1

固定サイズのArrayListを初期化することは可能ですか?それ以上増加しないで、初期占有率を0に初期化することはできますか?実際には通常のArrayのように動作するので、配列サイズまでadd()を使用することができます。最大サイズのArrayListを開始

+2

いいえ、それはありません。これは[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のように聞こえます:あなたは何を達成しようとしていますか?多分束縛されたキューがより適切でしょうか? – assylias

+0

それでは、通常の配列自体を使用しないでください。正確な動機は何ですか? –

+0

LinkedListのような他のarraylistの実装を試してみてください。 – mattymanme

答えて

1

あなたは

List<Integer> list = Arrays.asList(new Integer[desiredLength]); 

は、すべての要素がnullに初期化されている固定サイズList<Integer>を生成するために使用することができます。次にlist.set(index,value)を使用して、Listの要素を変更できます。 addを使用することはできません。addListsizeを変更します。これは固定サイズのリストでは許可されていません。

あなたはnull以外の値にリストを初期化したい場合は、あなたがこのような何か行うことができます。array通常よりむしろArrayList

のArrayListを使用しないのはなぜ

Integer[] arr = new Integer[desiredLength]; 
Arrays.fill(arr,0); 
List<Integer> list = Arrays.asList(arr); 
+0

おそらく最良のアプローチですが、実際のArrayListは生成されません。 –

+0

@DiegoMartinoia実際のArrayList(つまり、java.util.ArrayList)は、OPによって要求されるように固定サイズを持ちません。 – Eran

+0

はい私は知っている:)私はそれがALにそれを割り当てようとする場合にそれを言及する価値があると思ったと –

4

は、単に基本的に持つ配列ですより多くのアイテムを追加しなければならない状況をサポートします。我々はそれだけで従来のアレイのようなものだよりそのArrayListのサイズを変更していない場合

+0

私はそれを使用したいが、私は5サイズ、すべて割り当てられてarraylistをイニシャルする初期値は0です。最初からいくつかの条件に基づいて1を割り当て、最後に5つのelemnts 1があれば、テストが成功したことを意味します。そうでない場合は、1つのゼロがあるとfalseを示します。 –

+0

通常の 'array'を使うと何が問題になりますか?サイズ5の配列を初期化することができ、初期化時にはすべての値がゼロになり、操作を続行できます。 –

1

あなたは、唯一のArrayListを使用して、ArrayListのの最小サイズを保証することができます

ArrayList<T> myArrayList = new ArrayList(); 
myArrayList.ensureCapacity(n); 

をしかし、それはしていませんnより大きい固定サイズを設定し、n以上の値を追加することを妨げません。

他の人に言われているように、あなたはおそらく何か他のことをする方が良いでしょう。本当にそれを達成したい場合は、自分のコレクションを書くことができます:

public class MyArrayList<T> { 
    ArrayList<T> arrayList; 
    int size; 

    public MyArrayList(int size) { 
    this.size = size; 
    arrayList = new ArrayList<>(); 
    arrayList.ensureCapacity(size); 
    } 

    public void add(T x) { 
    if (arrayList.size() >= size) { 
     throw new IllegalStateException(); 
    } 
    arrayList.add(x); 
    } 

    //remove, etc.. . You can even extend/implement arrayList/list if you want to do polymorphism. 
}