динамически добавлять больше значений в массив в Java - PullRequest
0 голосов
/ 13 февраля 2012

все еще немного нововведен с массивами и списками в Java, я хотел бы динамически добавлять элементы в список, поэтому, например, если бы у меня был такой код:

List<int[]> rowList = new ArrayList<int[]>();

rowList.add(new int[] { 1, 2, 3 });
rowList.add(new int[] { 4, 5, 6 });
rowList.add(new int[] { 7, 8 });

как бы я динамически добавил 1,2,3,4,5,6,7 и т. Д.?заранее спасибо за помощь

Ответы [ 5 ]

2 голосов
/ 13 февраля 2012

Просто используйте List<Integer> для непосредственного сохранения чисел:

 List<Integer> ints = new ArrayList<Integer>();
 ints.add(1);    // works with Java 1.5+, inboxing
 ints.add(2);

Или, если вы хотите сохранить структуру данных, оберните числа в короткие массивы:

 rowList.add(newValue(1));

где у нас есть:

 private int[] newValue(int a) {
    int[] result = new int[1];
    result[0] = a;
    return result;
 }

Редактировать

Еще немного магии Java 1.5+, используя varargs и автобокс:

 private int[] newValue(Integer... values) {
    int[] result = new int[values.length];
    for (int i = 0; i < result.length; i++)
       result[i] = values[i];
    return result
 }

Использование:

List<int[]> rowList = new ArrayList<int[]>();

rowList.add(newValues(10, 20, 30));
rowList.add(newValues(1,2,3,4,5,6,7));
0 голосов
/ 13 февраля 2012

Я не уверен, что вам нужно, но я надеюсь, что этот пример поможет вам:

List<Integer> rowList = new ArrayList<Integer>();
Collections.addAll(rowList, ArrayUtils.toObject(new int[] { 1, 2, 3 }));
Collections.addAll(rowList, ArrayUtils.toObject(new int[] { 4, 5, 6 }));
Collections.addAll(rowList, ArrayUtils.toObject(new int[] { 7, 8 }));

ArraysUtils - это класс Apache Commons, действительно полезный для работы с массивами примитивов и объектов.

С уважением, Diodfr

0 голосов
/ 13 февраля 2012

Что-то из этого эффекта (используйте varargs, если у вас JDK 5 и выше).

public class ListUtils {
    public static void add(List<int[]> list, int... args) {
        if (list != null && args != null) {
            list.add(args);
        }
    }
}

Теперь вы можете сделать

ListUtils.add(list, 1, 2, 3, 4, 5, 6, 7);
0 голосов
/ 13 февраля 2012

Вы можете использовать цикл for, если хотите добавить их, не записывая каждый номер.

for(int i = 0; i < [however many you would like]; i++) {
    ints.add(i);
}
0 голосов
/ 13 февраля 2012

Если вы хотите добавить новый int [] в список, вам сначала нужно будет его создать и заполнить.Если вы не знаете длину массива, я бы предложил массив, который будет динамически добавлять пространство по мере того, как вы достигнете своего предела.

После того, как вы создали этот массив, просто передайте его в качестве аргумента.Должно быть прямо вперед.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...