Конвертировать Java от 1,8 до 1,6 - PullRequest
0 голосов
/ 29 января 2019

Как я могу преобразовать его в Java 1.6?Метод .stream () не работает в Java 1.6.

final Optional<Entry<String, String>> mapping = cfg.getTypeMapping()
                .entrySet()
                .stream()
                .filter(e -> e.getKey().startsWith(jsonType + "|"))
                .findFirst();

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Потоки почти всегда конвертируемы в циклы.Вы можете создать цикл for, проходить по каждой записи в наборе записей, проверять, соответствует ли оно вашим условиям в filter.Если это так, немедленно прервите цикл

Entry<String, String> result = null;
for (Entry<String, String> entry : cfg.getTypeMapping().entrySet()) {
    if (entry.getKey().startsWith(jsonType + "|")) {
        result = entry;
        break;
    }
}

Обратите внимание, что вместо Optional я использовал null для представления значения "not found".

0 голосов
/ 29 января 2019

Давайте кратко рассмотрим:

mapping = cfg.getTypeMapping()
            .entrySet()
            .stream()
            .filter(e -> e.getKey().startsWith(jsonType + "|"))
            .findFirst();

Приведенный выше код, вероятно, выбирает какую-то карту, получает ее записи и повторяет их, чтобы остановиться на первом ключе, который startsWith(jsonType + "|").

Это все, и его можно легко переписать в коде цикла старой школы.

Но реальная проблема здесь такова: final Optional<Entry<String, String>>: класс Необязательно был добавленв Java с Java 1.8.

Для нет эквивалента.Таким образом, весь ваш код просто может не быть переписан для Java 1.6

Самое близкое, что вы можете сделать: написать этот код цикла, и если цикл что-то найдет, вернуть этот результат, в противном случаевернуть ноль.В качестве альтернативы вы могли бы сделать это:

List<Entry<String, String>> firstMapping = Collections.emptyList(); 
for (Entry<String, String> entries = cfg.getTypeMapping().entrySet()) {
  if (entry.getKey().startsWith(jsonType + "|")) {
    firstMapping = Collections.singletonList(entry);
    break;
  }
} 
return firstMapping;

В качестве альтернативы, учитывая тот факт, что ОП рассматривает возможность использования com.google.common.base.Optional, вы можете сделать:

for (Entry<String, String> entries = cfg.getTypeMapping().entrySet()) {
  if (entry.getKey().startsWith(jsonType + "|")) {
    return Optional.of(entry);
  }
} 
return Optional.absent();

вместо.

И, конечно же, всегда помните: Java 6 есть.Следует избегать активной разработки для него, тем более, когда нужно полагаться на других людей, чтобы выполнить реальную работу по переносу портов.

(отказ от ответственности: мои примеры кода подразумевают детальное вдохновение псевдокода, я не запускал его через компилятор, он может содержать опечатки или тому подобное)

...