Эффективный способ конвертировать последовательность строк в URI

1

Это следующий вопрос о том, как сопоставить строки с URI?

У меня есть String URI, ограниченная пробелами.

http://...[sp]http://...[sp]http://...

Я пытаюсь разбить его и, наконец, собрать их в List.

Я до сих пор писал следующие коды.

final List<URI> uris = Stream.of(string.split("\\s"))
    .distinct()
    .filter(s -> s.isEmpty())
    .map(s -> {
        try {
            return new URI(s);
        } catch (final URISyntaxException urise) {
            return null;
        }
    })
    .filter(uri -> uri != null)
    .collect(Collectors.toList());

Мой вопрос в том,

  1. Является ли создание null конструктором URI, и следующая фильтрация неизбежна?
  2. Есть ли более эффективный способ сделать это?
Теги:
java-8
lambda
java-stream

1 ответ

1
Лучший ответ

Этого должно быть достаточно:

List<URI> uris = Stream.of(string.split("\\s+")).map(URI::create).collect(
    Collectors.toList());

Он выдает исключение, если встречается какой-либо недопустимый вход, но я считаю, что ошибки должны быть раскрыты, а не тихо подавлены.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню