Можно ли как-то упростить этот цикл, используя java 9 или java 8?
for (String s : list) {
if (s.indexOf("D") != -1) {
numberList.addAll(getDoubleFromString(s));
} else {
if (s.indexOf(".") != -1) {
numberList.add(new TypeSatellite(BigDecimal.valueOf(Double.valueOf(s))));
} else {
numberList.add(new TypeSatellite(Integer.valueOf(s)));
}
}
}
Давай-те сделаем оптимизации по шагам (основная сложность непонятно что принимают TypeSatellite и какой тип у numberList, поэтому напишу для object'a):
1) Можно заменить s.indexOf(...) != -1 на s.contains(...), то есть записать что-то вроде
list.forEach(s -> {
if (s.contains("D")) {
numberList.addAll(getDoubleFromString(s));
} else {
if (s.contains(".")) {
numberList.add(new TypeSatellite(BigDecimal.valueOf(Double.valueOf(s))));
} else {
numberList.add(new TypeSatellite(Integer.valueOf(s)));
}
}
});
2) Можно вынести общий код
list.forEach(s -> {
if (s.contains("D")) {
numberList.addAll(getDoubleFromString(s));
} else {
Object number = s.contains(".") ? BigDecimal.valueOf(Double.valueOf(s)) : Integer.valueOf(s);
numberList.add(new TypeSatellite(number));
}
});
3) Вынесем общий функцию:
list.forEach(s -> {
numberList.addAll(getListNumber(s));
});
}
private static Collection<Object> getListNumber(String s) {
if (s.contains("D")) {
return getDoubleFromString(s));
} else {
Object number = s.contains(".") ? BigDecimal.valueOf(Double.valueOf(s)) : Integer.valueOf(s);
return Collections.singleton(new TypeSatellite(number));
}
}
4) последний шаг используем стрим
numberList = list.stream().flatMap(::getListNumber ).collect(Collectors.toList());
private static Stream<Object> getListNumber(String s) {
if (s.contains("D")) {
return getDoubleFromString(s).stream();
} else {
Object number = s.contains(".") ? BigDecimal.valueOf(Double.valueOf(s)) : Integer.valueOf(s);
return Stream.of(new TypeSatellite(number));
}
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники