web-dev-qa-db-ja.com

Javaで配列のサイズを増やす方法は?

ユーザーが望むだけの要素を配列に格納したい。しかし、どうやってそれを行うのですか?.

配列を作成する場合は、固定サイズで作成する必要があります。新しい要素が配列に追加され、配列がいっぱいになるたびに、そのサイズを「1」だけ更新したいと思います。

いろいろな種類のコードに疲れましたが、うまくいきませんでした。

誰かが私にそれに関する解決策を(もし可能であればコードで)教えてくれれば、とても助かります。

14

配列を使用する代わりに、ArrayListなどの_Java.util.List_の実装を使用します。 ArrayListにはリストの値を保持する配列バックエンドがありますが、配列サイズはリストによって自動的に処理されます。

_ArrayList<String> list = new ArrayList<String>();
list.add("some string");
_

他の要素タイプについては、list.toArray(new String[list.size()])などを使用してリストを配列に変換することもできます。

6
Vulcan

オリジナルよりも1要素大きいサイズの一時配列を作成し、オリジナルの要素をtempにコピーして、一時配列を新しい配列に割り当てることができます。

public void increaseSize() {
   String[temp] = new String[original.length + 1];

   for (int i = 0; i < original.length; i++){
      temp[i] = original[i];
   }
   original = temp;
}

サイズはさまざまな方法で変更できますが、同じ考え方が適用されます。

4
PandaOrb

できません。新しい配列を作成してアイテムをその配列に移動するか、またはArrayListを使用できます。

2
Peter Rasmussen

低レベルでは、次のように行うことができます。

long[] source = new long[1];
long[] copy = new long[source.length + 1];
System.arraycopy(source, 0, copy, 0, source.length);
source = copy;

Arrays.copyOf()も同じことをしています。

1
A Kunin

copyOfメソッドをJava.util.ArraysクラスString[]で使用すると、サイズが自動的に/動的に増加します。

package com.google.service;

import Java.util.Arrays;

public class StringArrayAutoIncrement {
    public static void main(String[] args) {
        String[] data = new String[] { "a", "b", "c", "d", "e" };
        String[] array = new String[0];// array initialize with zero
        int incrementLength = 1;
        for (int i = 0; i < data.length; i++) {
            array = Arrays.copyOf(data, i + incrementLength);// increment by +1
        }
        /**
         * values of array after increment
         */
        for (String value : array) {
            System.out.println(value);
        }
    }
}

出力:

a
b
c
d
e
1
pudaykiran

リストオブジェクトを作成し、要素を追加して、list.toArray(new String [list.size()])を使用してそのリストオブジェクトを配列に変換します

0
user1573029