Saya memiliki metode berikut ... yang sebenarnya mengambil daftar kalimat dan membagi setiap kalimat menjadi kata-kata. Ini dia:
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;
}
Saya harus meneruskan daftar ini ke dalam hashmap dalam format berikut
HashMap<String, ArrayList<String>>
jadi metode ini mengembalikan List dan saya membutuhkan arrayList? Jika saya mencoba untuk melemparkannya tidak berhasil ... ada saran?
Juga, jika saya mengubah ArrayList ke List di HashMap, saya mengerti
java.lang.UnsupportedOperationException
karena baris ini di kode saya
sentenceList.add(((Element)sentenceNodeList.item(sentenceIndex)).getTextContent());
Ada saran yang lebih baik?
UnsupportedOperationException
penyebabnya karenaArrays.asList
metode mengembalikan daftar berukuran tetap yang didukung oleh larik - tidak dapat diubah. Solusi yang disajikan di sini oleh @Jesper akan menghindarinya.Transmisi berfungsi di mana contoh sebenarnya dari daftar adalah
ArrayList
. Jika ya, katakanlah, aVector
(yang merupakan ekstensi lain dariList
) itu akan memunculkan ClassCastException.Kesalahan saat mengubah definisi HashMap Anda disebabkan oleh elemen yang kemudian diproses, dan proses itu mengharapkan metode yang hanya ditentukan di
ArrayList
. Pengecualian memberi tahu Anda bahwa ia tidak menemukan metode yang dicari.Buat yang baru
ArrayList
dengan konten yang lama.new ArrayList<String>(myList);
sumber
Lihatlah ArrayList # addAll (Collection)
Jadi pada dasarnya Anda bisa menggunakan
ArrayList<String> listOfStrings = new ArrayList<>(list.size()); listOfStrings.addAll(list);
sumber
Dalam Kotlin List dapat diubah menjadi ArrayList dengan meneruskannya sebagai parameter konstruktor.
sumber
Arrays.asList
tidak mengembalikan contohjava.util.ArrayList
tetapi mengembalikan contohjava.util.Arrays.ArrayList
.Anda harus mengubah ke ArrayList jika Anda ingin mengakses
ArrayList
informasi tertentuallWords.addAll(Arrays.asList(strTemp.toLowerCase().split("\\s+")));
sumber
Pendekatan yang telah dicoba dan diuji.
public static ArrayList<String> listToArrayList(List<Object> myList) { ArrayList<String> arl = new ArrayList<String>(); for (Object object : myList) { arl.add((String) object); } return arl; }
sumber