JAVA编程 不用casting怎么把Iterable<String>转换成List<String>?

importjava.util.Arrays;importjava.util.HashSet;importjava.util.List;publicclassXXX{pr... import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

public class XXX {
private static final String document = null;//老师给的,感觉用不上? private List<String> listToCheck = new List<String>(document); //等号后面的List下有红线,错误为"Cannot instantiate the type List<String>", 这里改成null的话出现下面的问题

public XXX(Iterable<String> document){
while(document.iterator().hasNext()){
String temp = new String(document.iterator().next());
this.listToCheck.add(temp);//之前等号后面是null的话这里的add会出现nullPointerException,不能把string加到null上面吗?
document.iterator().remove();
}
}

老师不让用(List<String>)document
展开
 我来答
帅凡白07R
2012-09-07
知道答主
回答量:31
采纳率:0%
帮助的人:17万
展开全部
List是一个集合的接口,是不能被实例化的。
应该要这样写:List<String> listToCheck=new ArrayList<String>();
ArrayList实现了List的接口,所以就可以这么写。
你把你的写成这样应该就可以解决你的问题了。
追问
import一下解决了.能再看一下我把document里的String存到listToCheck那段吗,OutOfMemoryError
追答
while(document.iterator().hasNext()){
String temp = new String(document.iterator().next());
this.listToCheck.add(temp);//之前等号后面是null的话这里的add会出现nullPointerException,不能把string加到null上面吗?
document.iterator().remove();
}
你的这行代码,可以在迭代完了之后再将迭代器移除掉。
把 document.iterator().remove();方到while循环的外面。
如果在你还没把迭代器的数据取玩你就将其remove()掉,那么就会出现你那个错误了。
“OutOfMemoryError”
百度网友d2e330ad8
2012-09-07 · 超过20用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:41万
展开全部
有点没看懂你的程序,你创建初始化List对象没有成功,此时的listToCheck是一个空引用,所以调用add方法会抛出NullPointerException异常,List的构造器有三种重载,分别为
List()
List(int rows)
List(int rows,boolean multitipleMode)
所以你传入一个字符串参数进去理所当然是错误的,可以改为:
private List<String> listToCheck = new List<String>();
更多追问追答
追问
你的我输入进去还是List下面红线,问题也跟之前一样
追答
sorry,我刚看了API,List类是不可以带泛型的,所以你加入的话会产生错误,抱歉啊!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式