Подтвердить что ты не робот

ArrayList из массива int в java

Я новичок в концепции arraylist. Я сделал несколько программных строк:

ArrayList<int[]> arl=new ArrayList<int[]>();
int a1[]={1,2,3};
arl.add(0,a1);
System.out.println("Arraylist contains:"+arl.get(0));

Он выводит результат: Arraylist contains:[[email protected]

Теперь мои вопросы:

  • Как отобразить правильное значение, то есть 1 2 3.
  • Как я могу получить доступ к одному элементу массива a1, то есть, если я хочу знать значение в a1 [1].
4b9b3361

Ответ 1

Прежде всего, для инициализации контейнера вы не можете использовать примитивный тип (т.е. int; вы можете использовать int[], но поскольку вы хотите просто массив целых чисел, в этом я не вижу смысла). Вместо этого вы должны использовать Integer, как показано ниже:

ArrayList<Integer> arl = new ArrayList<Integer>();

Для добавления элементов просто используйте функцию add:

arl.add(1);  
arl.add(22);
arl.add(-2);

И последнее, но не менее важное: для печати ArrayList вы можете использовать встроенные функции toString():

System.out.println("Arraylist contains: " + arl.toString());  

Если вы хотите получить доступ к элементу i, где i - это индекс от 0 до длины массива-1, вы можете сделать:

int i = 0; // Index 0 is of the first element
System.out.println("The first element is: " + arl.get(i));

Я предлагаю сначала прочитать Java Containers, прежде чем приступать к работе с ними.

Ответ 3

В java массив является объектом. Поэтому вызов arl.get(0) возвращает примитивный объект int [], который появляется как ascii в вашем вызове System.out.

Следовательно, ответ на ваш первый вопрос

System.out.println("Arraylist contains:"+Arrays.toString( arl.get( 0 ) ) );

Если вы ищете определенные элементы, возвращаемый объект int [] должен быть указан как таковой. Ответ на ваш второй вопрос будет похож на

    int[] contentFromList = arl.get(0);
    for (int i = 0; i < contentFromList.length; i++) {
        int j = contentFromList[i];
        System.out.println("Value at index - "+i+" is :"+j);
    }

Ответ 4

Более просто.

List<Integer> arrayIntegers = new ArrayList<>(Arrays.asList(1,2,3));

arrayIntegers.get(1);

В первой строке вы создаете объект, а в конструкторе вы передаете параметр массива в List.

Во второй строке у вас есть все методы класса List:.get(...)

Ответ 5

Все правы. Вы не можете напрямую распечатать объект int [], но также нет необходимости использовать ArrayList из целых массивов.

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

Arrays.toString(arl.get(0))

означает разделение объекта String на подстроку, если вы хотите вставить что-либо между ними, например запятыми.

Здесь я думаю, что amv искал с точки зрения массива int.

System.out.println("Arraylist contains: " 
    + arl.get(0)[0] + ", " 
    + arl.get(0)[1] + ", " 
    + arl.get(0)[2]);

Этот ответ немного запоздал для amv, но все же может быть полезен другим.

Ответ 6

Вы должны использовать <Integer> вместо <int>:

int a1[] = {1,2,3};
ArrayList<Integer> arl=new ArrayList<Integer>();
for(int i : a1) {
    arl.add(i);        
    System.out.println("Arraylist contains:" + arl.get(0));
}

Ответ 7

java.util.Arrays.toString() преобразует массивы Java в строку:

System.out.println("Arraylist contains:"+Arrays.toString(arl.get(0)));

Ответ 8

ArrayList<Integer> list = new ArrayList<>();
int number, total = 0;

for(int i = 0; i <= list.size(); i++){
    System.out.println("Enter number " + (i + 1) + " or enter -1 to end: ");
    number = input.nextInt();

    list.add(number);

    if(number == -1){
        list.remove(list.size() - 1);
        break;
    }
}
System.out.println(list.toString());

for(int i: list){
    System.out.print(i + "  ");
    total+= i;
}
System.out.println();
System.out.println("The sum of the array content is: " + total);

Ответ 9

Настройка:

    List<int[]> intArrays=new ArrayList<>();
    int anExample[]={1,2,3};
    intArrays.add(anExample);

Чтобы получить один массив int [] в ArrayList по индексу:

    int[] anIntArray = intArrays.get(0); //'0' is the index
    //iterate the retrieved array an print the individual elements
    for (int aNumber : anIntArray ) { 
        System.out.println("Arraylist contains:" + aNumber );
    }

Чтобы получить все int [] массивы в ArrayList:

    //iterate the ArrayList, get and print the elements of each int[] array  
    for(int[] anIntArray:intArrays) {
       //iterate the retrieved array an print the individual elements
       for (int aNumber : anIntArray) {
           System.out.println("Arraylist contains:" + aNumber);
       }
}

Форматирование вывода может быть выполнено на основе этой логики. Гудлак!!