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 展开
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 展开
展开全部
List是一个集合的接口,是不能被实例化的。
应该要这样写:List<String> listToCheck=new ArrayList<String>();
ArrayList实现了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”
展开全部
有点没看懂你的程序,你创建初始化List对象没有成功,此时的listToCheck是一个空引用,所以调用add方法会抛出NullPointerException异常,List的构造器有三种重载,分别为
List()
List(int rows)
List(int rows,boolean multitipleMode)
所以你传入一个字符串参数进去理所当然是错误的,可以改为:
private List<String> listToCheck = new List<String>();
List()
List(int rows)
List(int rows,boolean multitipleMode)
所以你传入一个字符串参数进去理所当然是错误的,可以改为:
private List<String> listToCheck = new List<String>();
更多追问追答
追问
你的我输入进去还是List下面红线,问题也跟之前一样
追答
sorry,我刚看了API,List类是不可以带泛型的,所以你加入的话会产生错误,抱歉啊!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询