java - HashSet 迭代器检查字母

标签 java string iterator hashset letter

我有一个字符串哈希集(称为“名称”),我想从中删除所有至少包含一个非大写字母的字符的字符串。 我写了这段代码,但它不起作用:

Iterator<String> iterator=names.iterator();
while(iterator.hasNext()) {
    for (int i=0; i<iterator.next().length(); i++) {
        if (iterator.next().charAt(i) < 'A' || iterator.next().charAt(i) > 'Z') {
            names.remove(iterator.next());
        }
    }
}

最佳答案

如果您使用 Java-8,另一个解决方案是使用 removeIf和正则表达式 [A-Z]+ 像这样:

Set<String> names = //.. some inputs
names.removeIf(str -> !str.matches("[A-Z]+")); // remove if not matches [A-Z]+

请注意,在此解决方案中,您根本不需要将列表转换为迭代器,也不需要通过循环检查字符,只需通过正则表达式进行匹配即可。

关于java - HashSet 迭代器检查字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59015919/

相关文章:

java - 如何在 jsf 中使用 FacesContext?

java - 如何解决 Maven 中的依赖冲突?

java - 为json数据编写junit测试用例

c++ - 初始化字符串的静态数组(C++)?

mysql - MySQL中有正则表达式替换的功能吗?

c++ - 如何从 STL 数据结构中删除 reverse_iterator?

c++ - 什么是迭代器,C++?

java - 使用java识别并分离Datagrampacke的数据包中的数据

Javascript:删除字符串标点符号并拆分成单词?

generics - 在 Rust 中编写一个将可迭代容器作为参数的通用函数