Ski*_*r07 79 java list arraylist
我有一个以下方法......它实际上采用句子列表并将每个句子分成单词.就这个:
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;
}
Run Code Online (Sandbox Code Playgroud)
我必须以下列格式将此列表传递给散列映射
HashMap<String, ArrayList<String>>
Run Code Online (Sandbox Code Playgroud)
所以这个方法返回List,我需要一个arrayList?如果我试图施展它不锻炼...任何建议?
另外,如果我在一个HashMap中将ArrayList更改为List,我得到了
java.lang.UnsupportedOperationException
Run Code Online (Sandbox Code Playgroud)
因为我的代码中有这一行
sentenceList.add(((Element)sentenceNodeList.item(sentenceIndex)).getTextContent());
Run Code Online (Sandbox Code Playgroud)
有更好的建议吗?
SJu*_*n76 167
Cast工作的位置是列表的实际实例ArrayList.如果它是,例如,a Vector(它是另一个扩展List),它将抛出ClassCastException.
更改HashMap定义时的错误是由于稍后要处理的元素,并且该进程需要仅在其中定义的方法ArrayList.该例外告诉您它没有找到它正在寻找的方法.
ArrayList使用旧内容创建新内容.
new ArrayList<String>(myList);
Run Code Online (Sandbox Code Playgroud)
Jes*_*per 48
首先,为什么地图是a HashMap<String, ArrayList<String>>而不是HashMap<String, List<String>>?是否有一些理由为什么值必须是接口的特定实现List(ArrayList在这种情况下)?
Arrays.asList不返回a java.util.ArrayList,因此您无法将返回值Arrays.asList赋给类型变量ArrayList.
代替:
allWords = Arrays.asList(strTemp.toLowerCase().split("\\s+"));
Run Code Online (Sandbox Code Playgroud)
试试这个:
allWords.addAll(Arrays.asList(strTemp.toLowerCase().split("\\s+")));
Run Code Online (Sandbox Code Playgroud)
Mad*_*mer 35
看看ArrayList#addAll(Collection)
将指定集合中的所有元素按指定集合的迭代器返回的顺序附加到此列表的末尾.如果在操作正在进行时修改了指定的集合,则此操作的行为是不确定的.(这意味着如果指定的集合是此列表,则此调用的行为是未定义的,并且此列表是非空的.)
所以基本上你可以使用
ArrayList<String> listOfStrings = new ArrayList<>(list.size());
listOfStrings.addAll(list);
Run Code Online (Sandbox Code Playgroud)
在Kotlin中,可以通过将List作为构造函数参数传递来将其转换为ArrayList。
ArrayList(list)
Run Code Online (Sandbox Code Playgroud)
Arrays.asList不返回实例java.util.ArrayList但返回实例java.util.Arrays.ArrayList.
如果要访问ArrayList特定信息,则需要转换为ArrayList
allWords.addAll(Arrays.asList(strTemp.toLowerCase().split("\\s+")));
Run Code Online (Sandbox Code Playgroud)