J'ai une méthode suivante ... qui prend en fait la liste des phrases et divise chaque phrase en mots. Le voici:
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;
}
Je dois passer cette liste dans un hashmap dans un format suivant
HashMap<String, ArrayList<String>>
donc cette méthode retourne List et j'ai besoin d'un arrayList? Si j'essaye de lancer, ça ne fait pas de sport ... des suggestions?
De plus, si je change la ArrayList en List dans un HashMap, j'obtiens
java.lang.UnsupportedOperationException
à cause de cette ligne dans mon code
sentenceList.add(((Element)sentenceNodeList.item(sentenceIndex)).getTextContent());
De meilleures suggestions?
UnsupportedOperationException
est dû au fait que laArrays.asList
méthode renvoie une liste de taille fixe soutenue par un tableau - elle ne peut pas être modifiée. La solution présentée ici par @Jesper évitera cela.Cast fonctionne là où l'instance réelle de la liste est un
ArrayList
. Si c'est, disons, unVector
(qui est une autre extension deList
), il lèvera une ClassCastException.L'erreur lors de la modification de la définition de votre HashMap est due au traitement ultérieur des éléments, et ce processus attend une méthode définie uniquement dans
ArrayList
. L'exception vous indique qu'il n'a pas trouvé la méthode qu'il recherchait.Créez un nouveau
ArrayList
avec le contenu de l'ancien.new ArrayList<String>(myList);
la source
Jetez un œil à ArrayList # addAll (Collection)
Donc, fondamentalement, vous pouvez utiliser
ArrayList<String> listOfStrings = new ArrayList<>(list.size()); listOfStrings.addAll(list);
la source
Dans Kotlin List peut être converti en ArrayList en le passant en tant que paramètre de constructeur.
la source
Arrays.asList
ne retourne pas d'instance dejava.util.ArrayList
mais il renvoie une instance dejava.util.Arrays.ArrayList
.Vous devrez convertir en ArrayList si vous souhaitez accéder à
ArrayList
des informations spécifiquesallWords.addAll(Arrays.asList(strTemp.toLowerCase().split("\\s+")));
la source
Approche éprouvée.
public static ArrayList<String> listToArrayList(List<Object> myList) { ArrayList<String> arl = new ArrayList<String>(); for (Object object : myList) { arl.add((String) object); } return arl; }
la source