У меня есть такая строка "-FOREST&-JUNGLE&DESERT"
Эта строка разбита на слова в списке, например, так: [-FOREST, -JUNGLE ,DESERT]
List<String> pattern = Arrays.asList(s.split("\\s*&\\s*"));
Каждое слово со знаком минус на начало должно быть в одном новом списке, а каждое слово без в другом, например, так:
List<String> allowedtags = pattern
.stream()
.filter(name -> !name.startsWith("-"))
.collect(Collectors.toList());
List<String> unwantedtags = pattern
.stream()
.filter(name -> name.startsWith("-"))
.collect(Collectors.toList());
Моя проблема в том, что мой unwantedtags
сохраняет слова с минусом в начале, но для всех моих операций Мне нужно избавиться от этого. Если я сделаю приведенный ниже пример, он не будет работать, если «FOREST» находится в taglist
, поскольку мой unwantedtags
содержит «-FOREST».
if (taglist.stream().anyMatch(unwantedtags::contains)) {
return !IsWhitelist;
}
Так как я могу исправить свой список нежелательных тегов? Может быть в java 8 потоковых API? Более того, у меня есть ощущение, что, с одной стороны, до этого момента он работал нормально, но, с другой стороны, у меня возникает ощущение, что это большой код для получения всего двух списков. Можно ли его оптимизировать?