我有以下方法,从IMDB评论中传递HashSet<String>
个单词。
private static void reduceVocab(HashSet<String> vocab) {
for (Iterator<String> i = vocab.iterator(); i.hasNext();) {
String element = i.next();
element = element.replaceAll("[^a-zA-Z0-9]", ""); // Need to replace this
if (element.length() <= 3) {
i.remove();
}
}
}
我想通过删除太短的HashSet
并删除非字母数字字符来执行一些操作以减小String
的大小。有没有办法执行我正在尝试使用element.replaceAll()
?
答案 0 :(得分:4)
迭代时,您无法添加HashSet
。这使你想要做的事略显尴尬。这条线
element = element.replaceAll("[^a-zA-Z0-9]", "");
给出一个新字符串,但新字符串不在集合中。
你可以这样做:
private static void reduceVocab(HashSet<String> vocab) {
Set<String> copy = new HashSet<>();
for (String str : vocab) {
str = str.replaceAll("[^a-zA-Z0-9]", "");
if (str.length() > 3)
copy.add(str);
}
vocab.clear();
vocab.addAll(copy);
}