【发布时间】:2020-02-26 21:10:27
【问题描述】:
我有一个这样的字符串"-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 中? 此外,我有一种感觉,一方面它工作得很好,但另一方面,我觉得这是获得两个列表的大量代码。可以优化吗?
【问题讨论】:
标签: java arraylist java-stream