异常一:
之前遇到一个问题。在用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访问的时候不知道大家有没有注意到这里有一个空格?
这是关键,把这个url直接输入到浏览器可以打开,浏览器默认会补充一个%20,也就是把url编译成unicode(统一编码)。这样问题就差不多解决了。或者编译成unicode,一般的会把//也编译的。我觉得还是直接找空格补充%20就好了。
异常三:
java.util.ConcurrentModificationException(map的操作异常),在集合和数组执行的时候是不允许直接操作的对集合进行修改的。原因是出在iterator上,后台找到解决办法,循环map的时候跳过iterator。
方法一: 原本的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运行想继续运行的。
相关推荐
Map a = new HashMap(); //方法一 Iterator it = a.entrySet().iterator(); while (it.hasNext()) { Map.Entry pairs = (Map.Entry) it.next(); System.out.println(pairs.getValue()); } //以下方法需要jdk5以上...
### Java Map遍历方法详解 在Java编程语言中,`Map`接口是集合框架中的一个核心组成部分,它存储键值对映射。本篇文章将详细介绍几种常用的遍历`Map`的方法,包括使用传统迭代器(Iterator)、增强型for循环(For-...
在Java编程中,`Map`接口是集合框架的一部分,它提供了键值对的存储功能。在处理`Map`对象时,我们经常需要遍历其中的所有元素。本篇将详细介绍Java中遍历`Map`的不同方法,以及如何获取`Map`的长度。 1. **遍历Map...
在Java编程中,多层嵌套循环是一种常见的数据处理方式,尤其在处理具有层次关系的数据时,例如构建或解析父子级结构。在这种场景下,我们可能需要遍历多个层级的数据,以便进行转换、操作或者存储到数据库中。下面将...
在Java编程语言中,`Map`接口是一种非常重要的数据结构,用于存储键值对。它在实际应用中极为广泛,特别是在处理关联数据时。本文将深入探讨如何在Java中使用`keySet`方法来遍历`Map`集合,以及相关的知识点。 ### ...
"Java for循环Map集合优化实现解析" Java for循环Map集合优化实现解析是Java编程语言中的一种高效的集合优化技术。该技术通过使用Map集合来优化for循环的性能,减少循环次数,从而提高程序的执行效率。 Java for...
在Java编程语言中,`Map`接口是集合框架的一个重要组成部分,它提供了键值对(key-value pairs)的存储和访问。这篇博文主要探讨了如何遍历Java中的`Map`对象,下面将详细介绍几种常见的遍历`Map`的方法。 1. **...
在Java编程中,循环是遍历数据结构的基本方式,特别是在处理列表(List)和映射(Map)时。本文将深入探讨Java中对List和Map进行循环的常见方法,并提供相关代码实例,以帮助开发者更好地理解和应用。 首先,我们来看...
### Java遍历Map对象的所有数据 在Java编程中,`Map`接口是Java集合框架中的一个关键组成部分,它用于存储键值对。本篇文章将详细解释如何遍历`Map`对象的所有数据,并介绍几种常见的遍历方法。我们将重点讨论通过`...
Java中的Map接口是Java集合框架的重要组成部分,它用于存储键值对的数据结构。Map不同于List,List是以索引来访问元素,而Map则是通过键(key)来查找对应的值(value)。Map接口定义了一系列方法,使得我们可以对...
在 Java 中,我们可以使用传统的方式来过滤 Map 中的数据,即使用循环遍历 Map 中的每个键值对,然后根据条件判断是否保留该键值对。例如: ```java Map, String> map = new HashMap(); for (Map.Entry, String> ...
- JDK 1.5及以后版本,可以使用增强的for循环遍历Map的键集: ```java for (String key : map.keySet()) { String value = map.get(key); // 执行相关操作 } ``` - JDK 1.4及以前版本,需要使用迭代器: ``...
Java 5引入了增强的for循环(也称为foreach循环),使得遍历Map变得非常简洁。通过`Map.entrySet()`方法,我们可以获取到Map的所有Entry对象的集合,然后使用for-each循环来遍历每个Entry,如下所示: ```java ...
在编程中,尤其是在Java或类似的面向对象语言中,我们经常遇到需要处理复杂数据结构的情况,如嵌套的Map和List。这些数据结构可以提供灵活的方式来存储和操作数据,特别是当数据具有层次关系时。本篇将详细介绍如何...
纯java底层读取配置文件,生成map,可以根据key模糊匹配查询,封装好了方法。比如getVal("spring.dubbo*url")
在Java编程语言中,二维数组可以被用来模拟简单的Map数据结构。Map是一种键值对的集合,其中每个键(Key)都是唯一的,并且与一个值(Value)相关联。尽管Java提供了内置的Map接口(如HashMap、TreeMap等),但有时...
"java 遍历Map及Map转化为二维数组的实例" 在 Java 编程语言中,遍历 Map 及将其转化为二维数组是一种常见的操作。本文将详细介绍如何使用 Java 遍历 Map 及将其转化为二维数组,并提供实例代码以供参考。 1. 使用...
Java map存放数组并取出值代码详解 Java map是Java编程语言中的一种常用的数据结构,用于存储键值对形式的数据。在Java中,map可以存放数组,并且可以通过不同的方法来取出值。本文将详细介绍Java map存放数组并...
遍历MAP的几种方法,利用keyset进行遍历,它的优点在于可以根据你所想要的key值得到你想要的 values,更具灵活性
本篇文章将详细介绍Java中Map的几种循环方式。 1. **For-Each Loop(增强型for循环)** JDK 1.5引入了For-Each Loop,它简化了集合的遍历,包括Map。对于Map,我们可以通过两种方式使用For-Each Loop: - 循环...