@4ainik
начинал с бейсика на 286 в 1994

Как в джаве работать с массивами?

Как в джаве а точнее в андроиде работать с массивами?
Задача такая: нужно накопить некоторые данные, которые поступают пачками неизвестной длинны, с возможностью их последующей обработки. с файлами связываться не хотелось бы.
входящие данные массив short[].
Пробовал ArrayList, но при попытке доступа к элементу ( a.get(index) ) как к целому при компиляции возникает ошибка "The operator * is undefined for the argument type(s) int, Object"
т.е. получается в ArrayList хранится не массив, а объект и как его преобразовать обратно в массив не понятно, точнее непонятно как работать с отдельными элементами
  • Вопрос задан
  • 385 просмотров
Пригласить эксперта
Ответы на вопрос 3
Я подозреваю ты пытаешься сделать что-то типа List<short> arr;. Дело в том, что коллекции (к которым относится и ArrayList) могут хранить только объекты, т.е. не могут хранить примитивы как есть. Чтобы хранить в ArrayList short значения, используй враппер Short: List<Short> arr;
Ответ написан
Комментировать
@4ainik Автор вопроса
начинал с бейсика на 286 в 1994
ArrayList a = new ArrayList();
for(int j = 0; j < x; j++){
short[] buf = new short[200];
count = func(buf, 200);
for(int i = 0; i < count; i++){
  a.add(buf[i]);
}
}

...
после накопления данных пытаюсь обработать
int sum = 0;
for(int i = 0; i < a.size(); i++){
   sum += a.get(i); //тут собственно не важно какая операция сложение/умножение, 
ошибка та же, что объект не может быть преобразован к int
}


пробовал еще по типу Си, vector :)
но там опять же какая-то беда при объявлении
Vector<short> = new Vector<short>();

"Syntax error, insert "Dimensions" to complete ReferenceType"
Ответ написан
@frozen_coder
Java-developer
List<Short> a = new ArrayList();
По хорошему выберите что-то одно - или массивы, или коллекции. Лучше коллекции, массивы я вообще не помню когда последний раз юзал.
Как уже выше советовали прочитайте про Collections, Generics, Autoboxing.
for(int i = 0; i < a.size(); i++){
sum += a.get(i);
}

А вместо for с коллекциями можно в for each. И кстати зачем сначала использовать short, а потом переходить на int? Может лучше сразу в int?
Integer sum = 0;
for(Short item : a){
     sum += (Integer) item;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы