1.HashMap和List遍历方法总结及如何遍历删除
HashMap和List遍历方法总结及如何遍历删除
(一)List的码分遍历方法及如何实现遍历删除
我们创建一个List并使用不同的方法进行遍历和删除,如下所示:
1. for循环遍历List:
```java
List list = new ArrayList();
list.add("zs");
list.add("ls");
list.add("ww");
list.add("dz");
for(int i=0; i<list.size(); i++){
if(list.get(i).equals("ls"))
list.remove(i);
}
```
这种for循环遍历方式常见,码分但在删除元素时会出现问题。码分因为删除元素后,码分List的码分如何使用源码模板大小会改变,索引也会随之改变,码分immutable 源码导致遍历时可能会漏掉某些元素。码分所以,码分这种方法适用于读取元素,码分但不适合删除元素。码分
2. 增强for循环:
```java
for(String x : list){
if(x.equals("ls"))
list.remove(x);
}
```
增强for循环也是码分常见的遍历方式,但在删除元素时也会出现问题,码分可能会抛出`ConcurrentModificationException`异常。码分autowired源码原因是码分增强for循环背后实际上是Iterator,在遍历时如果修改了集合的码分结构(如删除元素),则会触发这个异常。
3. Iterator遍历删除:
```java
Iterator it = list.iterator();
while(it.hasNext()){
String x = it.next();
if(x.equals("del")){
it.remove();
}
}
```
这种方式可以正常遍历和删除元素。-1111源码与增强for循环不同,这里使用`it.remove()`来直接在Iterator层面删除元素,因此不会出现`ConcurrentModificationException`异常。
(二)HashMap的codecombat 源码遍历删除及如何实现遍历删除
我们先创建一个HashMap:
```java
private static HashMap map = new HashMap();
public static void main(String[] args) {
for(int i = 0; i < ; i++){
map.put(i, "value" + i);
}
}
```
1. 第一种遍历删除:
```java
for(Map.Entry entry : map.entrySet()){
Integer key = entry.getKey();
if(key % 2 == 0){
System.out.println("To delete key " + key);
map.remove(key);
System.out.println("The key " + key + " was deleted");
}
}
```
这种遍历删除同样会抛出`ConcurrentModificationException`异常。
2. 第二种遍历删除:
```java
Set keySet = map.keySet();
for(Integer key : keySet){
if(key % 2 == 0){
System.out.println("To delete key " + key);
keySet.remove(key);
System.out.println("The key " + key + " was deleted");
}
}
```
这种方法同样会抛出异常,原因与List的遍历删除类似。
3. 第三种遍历删除:
```java
Iterator<Map.Entry> it = map.entrySet().iterator();
while(it.hasNext()){
Map.Entry entry = it.next();
Integer key = entry.getKey();
if(key % 2 == 0){
System.out.println("To delete key " + key);
it.remove();
System.out.println("The key " + key + " was deleted");
}
}
```
这种方法是正确的,因为它使用了Iterator的`remove()`方法来删除元素,避免了并发修改的问题。
综上所述,遍历集合时删除元素应使用Iterator的`remove()`方法,这样可以避免`ConcurrentModificationException`异常。希望大家在遇到类似问题时,能够通过查看源代码找到解决问题的方法。
2024-12-24 09:001233人浏览
2024-12-24 08:581969人浏览
2024-12-24 08:521318人浏览
2024-12-24 08:281752人浏览
2024-12-24 08:141246人浏览
2024-12-24 06:511693人浏览
前桃園市長鄭文燦今11)日下午將第3度的開羈押庭,外界也質疑,涉嫌行賄的人都收押了,收賄的卻一再交保,檢調辦案是否被政治力介入?對此法務部次長徐錫祥強調,司法辦案絕對是「公正獨立」。鄭文燦涉貪案在2次
1.什么是云平台分销商城?十一种常规的分销模式 深度解析+源码搭建什么是云平台分销商城?十一种常规的分销模式 深度解析+源码搭建 云平台分销商城是一种社交电商中的常见商业模式,它包含多种分销模式,
1.网站源码怎么用?2.cloud-init介绍及源码解读(上)3.ERP系统源码-云进销存web+app)搭建附源码PC+APP+H5+小程序)4.php宝塔搭建实战FeelCRM开源客户管理系统源