我的FileContent类具有arraylistOfChars和arraylistOfWords。 此类还实现了IterableText接口。 接口IterableText具有两个抽象方法:charIterator()和wordIterator()。这些方法返回Iterator。 它们在FileContent类中被重写,并分别返回arraylistOfChars.iterator()和arraylistOfWords.iterator()。
CharIterator类实现Iterator并覆盖两个方法:next()和hasNext()-相同的WordIterator类。这些类需要FileContent对象作为其构造函数中的参数。
StatisticalAnalysis类是一个数据集,并具有以下方法:
public int size()
-返回所有单词或字符的数量。public Set<String> occurMoreThan(Integer integer)
-返回出现次数超过给定数字的单词或字符集。public int countOf(String... strings)
-返回所有字符串的数量。public int dictionarySize()
-返回数量不重复的单词或字符。StatisticalAnalysis类需要在构造函数中将Iterator作为参数。
例如,当我在size方法中使用迭代器时,便无法再次使用它。 我该怎么做才能解决这个问题? 如何创建新的迭代器?
//StatisticalAnalysis class
private Iterator<String> iterator;
public StatisticalAnalysis(Iterator<String> iterator){
this.iterator = iterator;
}
private static <String> Iterable<String> iterable(final
Iterator<String> it) {
return new Iterable<String>() {
public Iterator<String> iterator() {
return it;
}
};
}
public int size() {
int size = 0;
for (String s : iterable(iterator)) {
size++;
}
return size;
}
public Set<String> occurMoreThan(Integer integer) {
for (String s : iterable(iterator)) {
System.out.println(s);
}
return null;
}
我希望在StatisticsAnalysis类的所有方法中使用相同的迭代器访问列表。