Я хочу преобразовать ArrayList строк в целые числа в Java.
Моя попытка:
ArrayList number = new ArrayList(Arrays.asList("45","9","77"))
int res = 0;
System.out.println(res);
for (int i = 0; i < number.size(); i++) {
res = res * 10 + number.charAt(i) - '0';
}
в int как 45,9,77
45,9,77 не является целым числом
Вы имеете в виду ArrayList<String>
в ArrayList<Integer>
?
list.stream().map(Integer::valueOf).collect(toList())
Возможный дубликат Преобразование List<String> в List<Integer> напрямую
List<String> stringNumberList = new ArrayList<String>(Arrays.asList("45","9","77")) int res = 0; for (String s: stringNumberList) { res = Integer.parseInt(s); System.out.println(разрешение); } }
Вы что-то здесь упускаете. У вас есть List
из String
, и вы должны перебирать символы каждого из этих String
отдельно, чтобы преобразовать его в int
. Это означает, что вам нужно два вложенных цикла.
Хотя есть гораздо более простые способы сделать это (с помощью Integer.parseInt()
), вот реализация, основанная на логике исходного кода:
List<String> numbers = Arrays.asList("45","9","77");
List<Integer> output = new ArrayList<>();
for (String number : numbers) {
int res = 0;
for (int i = 0; i < number.length(); i++) {
res = res * 10 + (number.charAt(i) - '0');
}
output.add(res);
}
System.out.println (output);
Выход:
[45, 9, 77]
не совсем ясно, имеет ли он в виду одно целое число или список целых чисел/целых чисел. с одним Stream -> map (r -> return Integer.parseInt(r)) он может делать то, что хочет
@Stultuske Я понял, что каждая строка должна быть преобразована в int отдельно, и комментарий ОП подтверждает это.
так зачем нужен вложенный цикл? использование потока для однократной итерации и возврата целочисленного значения, которое впоследствии будет собрано в список, должно сделать это
что вы имеете в виду под «целым числом»?