Java开发人员容易犯的9个错误(2)
结果打印:[b, d] 在上面这个方法中有一系列的问题,当一个元素被删除的时候,list大小减小,然后原先索引指向了其它元素。所以如果你想在循环里通过索引来删除多个元素,将不会正确工作。 你也许知道使用迭代器是在循环里删除元素的正确方式,或许你也知道foreach循环跟迭代器很类似,但事实情况却不是这样,如下代码: 将抛出ConcurrentModificationException异常。 然而接下来的代码却是OK的: next方法需要在remove方法之前被调用,在foreach循环里,编译器会在删除元素操作后调用next方法,这导致了ConcurrentModificationException异常。 4、HashTable与HashMap从算法的角度来讲,HashTable是一种数据结构名称。但是在Java中,这种数据结构叫做HashMap。HashTable与HashMap的一个主要的区别是HashTable是同步的,所以,通常来说,你会使用HashMap,而不是Hashtable。 5、使用集合原始类型(raw type)在Java中,原始类型(raw type)和无界通配符类型很容易让人混淆。举个Set的例子,Set是原始类型,而Set<?>是无界通配符类型。 请看如下代码,add方法使用了一个原始类型的List作为入参: (编辑:ASP站长网) |