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.