为什么它不创建空列表? String fileContent = "";List<String> wordsList = Arrays.asList(fileContent.trim().split("[\\s]+"));当我使用:System.out.print(wordsList.size());它打印:1此列表中的第一位是什么?当我想测试我的迭代器时,我遇到了这个问题。我的测试:@Test void checkIfWorksWhenNoWord() { String emptyString=""; assertFalse(new WordIterator(emptyString).hasNext()); }我的课:import java.util.Arrays;import java.util.Iterator;import java.util.List;public class WordIterator implements Iterator { int index; List<String> wordsList; public WordIterator(String fileContent) { this.wordsList = Arrays.asList(fileContent.trim().split("[\\s]+")); } public List<String> getWordsList() { return wordsList; } @Override public boolean hasNext() { return index < wordsList.size(); } @Override public String next() { if(hasNext()){ return wordsList.get(index++); } return null; }}
1 回答

aluckdog
TA贡献1847条经验 获得超7个赞
来自 Javadoc split
:
此方法返回的数组包含此字符串的每个子字符串,这些子字符串由与给定表达式匹配的另一个子字符串终止或以字符串结尾终止。
因此,"".split("[\\s]+")
给出Array("")
一个包含单个空字符串的数组,因为空字符串是输入字符串的唯一子字符串,它以输入字符串的结尾终止。奇怪,但真实。
添加回答
举报
0/150
提交
取消