Почему Array.asList не создает пустой список? - PullRequest
0 голосов
/ 16 февраля 2019

почему не создается пустой список?

 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 Ответ

0 голосов
/ 16 февраля 2019

Из Javadoc split:

Массив, возвращаемый этим методом, содержит каждую подстроку этой строки, которая заканчивается другой подстрокой, соответствующей данному выражению, или заканчивается концом строки.

Следовательно, "".split("[\\s]+") дает Array(""), то есть массив, содержащий одну пустую строку, потому что пустая строка является единственной подстрокой входной строки, которая заканчивается концомвходной строки.Странно, но это правда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...