为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Array.asList 不创建空列表?

为什么 Array.asList 不创建空列表?

慕盖茨4494581 2022-06-23 16:32:55
为什么它不创建空列表? 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("")一个包含单个空字符串的数组,因为空字符串是输入字符串的唯一子字符串,它以输入字符串的结尾终止。奇怪,但真实。


查看完整回答
反对 回复 2022-06-23
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号