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].
Ответы
Ответ 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, прежде чем приступать к работе с ними.
Ответ 2
Ответ 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);
}
}
Форматирование вывода может быть выполнено на основе этой логики. Гудлак!!