Можно ли как-то упростить этот цикл, используя 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
Комментариев нет:
Отправить комментарий