Это следующий вопрос о том, как сопоставить строки с 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());
Мой вопрос в том,
null
конструктором URI, и следующая фильтрация неизбежна?Этого должно быть достаточно:
List<URI> uris = Stream.of(string.split("\\s+")).map(URI::create).collect(
Collectors.toList());
Он выдает исключение, если встречается какой-либо недопустимый вход, но я считаю, что ошибки должны быть раскрыты, а не тихо подавлены.