¿Por Array.asList no crea una lista vacía?

Martin Parson:

por qué no crea una lista vacía?

 String fileContent = "";
List<String> wordsList = Arrays.asList(fileContent.trim().split("[\\s]+"));

Cuando uso:

System.out.print(wordsList.size());

Imprime:

1

Lo que está en una primera posición en esta lista? Tengo este problema cuando quiero probar mi iterador.

Mi prueba:

@Test
    void checkIfWorksWhenNoWord() {
        String emptyString="";

        assertFalse(new WordIterator(emptyString).hasNext());
    }

Mi clase:

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;
    }
}
Andrey Tyukin:

De Javadoc split:

La matriz devuelta por este método contiene cada subcadena de esta cadena que es terminada por otra subcadena que coincide con la expresión dada o es terminada por la final de la cadena.

Por lo tanto, "".split("[\\s]+")da Array(""), es decir, una matriz que contiene una sola cadena vacía, debido a que la cadena vacía es la única subcadena de la cadena de entrada que está terminado por el extremo de la cadena de entrada. Extraño pero cierto.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=225118&siteId=1
Recomendado
Clasificación