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

为什么它不创建空列表?


 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;

    }

}


慕盖茨4494581
浏览 86回答 1
1回答

aluckdog

来自 Javadoc&nbsp;split:此方法返回的数组包含此字符串的每个子字符串,这些子字符串由与给定表达式匹配的另一个子字符串终止或以字符串结尾终止。因此,"".split("[\\s]+")给出Array("")一个包含单个空字符串的数组,因为空字符串是输入字符串的唯一子字符串,它以输入字符串的结尾终止。奇怪,但真实。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java