首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java 地图循环

2013-02-02 
java map循环异常一:之前遇到一个问题。在用httpclient爬取网页上的代码的时候,出现了内存溢出的异常(Excep

java map循环

异常一:

之前遇到一个问题。在用httpclient爬取网页上的代码的时候,出现了内存溢出的异常(Exception?in?thread?"main"?java.lang.StackOverflowError)

后来听到群里面大神(也就是我师父的)讲解,知道递归调用方法比较消耗栈内存,改成循环调用方法就好了。

结果可想而知,正确。例如,

public static void cawler(.....){    .........          cawler(.....);}这样递归执行会消耗太多的栈内存,栈在程序执行的时候是不会释放的,需要等到程序执行完毕才会释放。后台把这个修改成这样。public static void cawler(.....){    .........          cawlerling(.....);}public static void cawlerling(.....){}这样就解决的栈内存溢出的异常了。

?异常二:

?

??? 还遇到了这样的异常。Exception?in?thread?"main"?java.lang.IllegalArgumentException:?Illegal?character?in?query?at?index?54:?http://video.baidu.com/v?ct=301989888&word=numb+linkin?park

这个异常表示访问的这个url有问题。

用httpclent访问的时候不知道大家有没有注意到这里有一个空格?java 地图循环

这是关键,把这个url直接输入到浏览器可以打开,浏览器默认会补充一个%20,也就是把url编译成unicode(统一编码)。这样问题就差不多解决了。或者编译成unicode,一般的会把//也编译的。我觉得还是直接找空格补充%20就好了。

异常三:

?????? j方法一:原本的iterator循环,改成 while(!map.isEmpty()){//手写的,不知道单词对不对 for(String s:map.keySet()){//这个循环只是为了让你得到key和value值的 ................. map.remove(s);//删除map中指定的值 break; }}方法二:while(!map.isEmpty){ List<String> lsit=new ArrayList<String>(): list.addAll(map.keySet()); String key=list.get(0); String value=map.get(key); map.remove(key);}

?异常四:

??????????? 当网络打不开一个url的时候,一般就是直接中断程序,现在我不像中断程序,想继续运行下去。应该把运行的模块包含在try catch(){}里面。然后在catch里面加上 continue;? 不过这的在循环里面哦。如果只是执行一段循序程序,哪么直接用finally运行想继续运行的。

?

热点排行