Ich habe eine folgende Methode ... die tatsächlich die Liste der Sätze nimmt und jeden Satz in Wörter aufteilt. Hier ist es:
public List<String> getWords(List<String> strSentences){
allWords = new ArrayList<String>();
Iterator<String> itrTemp = strSentences.iterator();
while(itrTemp.hasNext()){
String strTemp = itrTemp.next();
allWords = Arrays.asList(strTemp.toLowerCase().split("\\s+"));
}
return allWords;
}
Ich muss diese Liste in einer Hashmap in einem folgenden Format übergeben
HashMap<String, ArrayList<String>>
Also gibt diese Methode List zurück und ich brauche eine ArrayList? Wenn ich versuche zu wirken, funktioniert es nicht ... irgendwelche Vorschläge?
Wenn ich die ArrayList in einer HashMap in List ändere, wird Folgendes angezeigt:
java.lang.UnsupportedOperationException
wegen dieser Zeile in meinem Code
sentenceList.add(((Element)sentenceNodeList.item(sentenceIndex)).getTextContent());
Irgendwelche besseren Vorschläge?
UnsupportedOperationException
dadurch verursacht, dass dieArrays.asList
Methode eine Liste mit fester Größe zurückgibt, die von einem Array unterstützt wird - sie kann nicht geändert werden. Die hier von @Jesper vorgestellte Lösung wird dies vermeiden.Cast funktioniert dort, wo die eigentliche Instanz der Liste eine ist
ArrayList
. Wenn es sich beispielsweise um eineVector
(eine weitere Erweiterung vonList
) handelt, wird eine ClassCastException ausgelöst.Der Fehler beim Ändern der Definition Ihrer HashMap ist darauf zurückzuführen, dass die Elemente später verarbeitet werden. Dieser Prozess erwartet eine Methode, die nur in definiert ist
ArrayList
. Die Ausnahme besagt, dass die gesuchte Methode nicht gefunden wurde.Erstellen Sie eine neue
ArrayList
mit dem Inhalt der alten.quelle
Schauen Sie sich ArrayList # addAll (Collection) an.
Also im Grunde könnte man verwenden
quelle
In Kotlin kann List in ArrayList konvertiert werden, indem sie als Konstruktorparameter übergeben wird.
quelle
Arrays.asList
gibt keine Instanz von zurück,java.util.ArrayList
aber es gibt eine Instanz von zurückjava.util.Arrays.ArrayList
.Sie müssen in ArrayList konvertieren, wenn Sie auf
ArrayList
bestimmte Informationen zugreifen möchtenquelle
Bewährter Ansatz.
quelle