Как перевести лямбда-выражение в обычный код? - PullRequest
0 голосов
/ 06 июня 2019

Я писал в Java 1.8, и теперь мне нужно понизиться до 1.6. У меня проблема с написанием этого кода обычным способом. Какие-либо предложения ?

return Stream.of(field.getText().split(","))
             .map(String::trim)
         **.filter(s -> !s.isEmpty())**
             .map(Integer::valueOf)
             .collect(Collectors.toSet());

Большое спасибо за вашу помощь.

Вот что я попробовал:

if(!splitted[i].isEmpty()) {
   set.add(Integer.valueOf(splitted[i]));
}  

Ответы [ 2 ]

5 голосов
/ 06 июня 2019
Set<Integer> results = new HashSet<>();
for (String part : field.getText().split(",")) {
    String trimmed = part.trim();
    if (trimmed.isEmpty()) continue;
    results.add(Integer.valueOf(trimmed));
}
3 голосов
/ 06 июня 2019

Ваш код выполняет следующие действия:

  1. разделить текст поля по ','
  2. вызовите trim () для каждого из этих
  3. работает только со всеми не пустыми
  4. разобрать эту строку в целые числа
  5. положить их в набор

это можно сделать так:

РЕДАКТИРОВАТЬ : for-each лучше и может использоваться начиная с java 1.5

Set<Integer> set = new HashSet<>();
for(String split : field.getText().split(",")) {
    split = split.trim();
    if(!split.isEmpty()) {
         set.add(Integer.valueOf(split));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...