集合的添加、遍历、删除

本文介绍了Java中集合的三种遍历方法,强调了lambda表达式不适用于数组遍历。同时,讲解了集合元素的删除和修改操作。

一、集合值的添加


首先定义一个ArrayList集合:
定义好数组后通过add添加值。


```java
public class Demo {
    public static void main(String[] args) {
        ArrayList aList = new ArrayList();//定义数组
        aList.add("好");//添加数值
        aList.add(1);
        aList.add(2);
        aList.add(3);
        aList.add(4);
        Object aget = aList.get(0);//获取(注意此处获取的是从0开始的)
        System.out.println(aget);//输出获取的值

    }
}

二、集合三种遍历方法

 //遍历集合(方法一传统for循环)
        for (int i = 0; i<aList.size();i++){
            System.out.println(aList.get(i));//输出结果
        }
//方法二:高级for循环(数据类型 变量名 :集合/数组)
        for(Object temp : aList){
            System.out.println("temp="+temp);
        }
//方法三:lambda表达式 集合.foreach(temp->{代码块}
        aList.forEach(temp->{
            System.out.println(temp);
        });

注意高级表达式可以遍历数组,但是lambda表达式不能遍历数组。

三、集合值的删除和修改

public class Demo2 {
    public static void main(String[] args) {
        List<String> aList = new ArrayList<String>();
        aList.add("赵一");
        aList.add("张三");
        aList.add("李四");
        aList.add("王五");
        aList.add("马六");


        //删除集合中指定下标的数据
        aList.remove(0);

        //根据指定内容删除
        aList.remove("张三");

        //清空集合中的所有元素
        //aList.clear();

        //修改
        aList.set(0,"李狗带");

        //删除后遍历查看
        aList.forEach(temp->{
            System.out.println(temp);
        });
    }
集合遍历删除有多种方法,不同的集合类型和场景适用不同的方法,以下是一些常见集合(List、Set、Map)的遍历删除方法及注意事项: ### List集合 - **迭代器(Iterator)**: - 代码示例: ```java import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ListDemo { public static void main(String[] args) { List<String> sList = new ArrayList<>(); sList.add("0"); sList.add("1"); sList.add("2"); sList.add("3"); sList.add("4"); Iterator<String> iterator = sList.iterator(); while (iterator.hasNext()) { String item = iterator.next(); if (item.equals("1")) { iterator.remove(); } } System.out.println(sList); } } ``` - 注意事项:使用迭代器进行删除操作时,必须使用`iterator.remove()`方法,不能使用集合的`remove()`方法,否则会抛出`java.util.ConcurrentModificationException`异常。该方法支持遍历中安全删除元素,兼容所有集合类型,但代码复杂度较高,无法直接添加元素或获取索引[^1][^3]。 - **普通for循环**: - 代码示例: ```java import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("HIT1"); list.add("HIT2"); list.add("Harbin"); list.add("HITComputer"); for (int i = 0; i < list.size(); i++) { if (list.get(i).startsWith("HIT")) { list.remove(i); i--; // 避免跳过元素 } } for (String s : list) { System.out.println(s); } } } ``` - 注意事项:在使用普通for循环删除元素时,如果有重复元素,可能会删除不彻底,需要在删除元素后调整索引,避免跳过元素。当没有重复数据时可以删除彻底,但当有重复数据时可能只删除部分数据[^2][^4]。 - **增强for循环**: - 代码示例: ```java import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("aa"); list.add("aa"); list.add("cc"); list.add("dd"); // 错误示例 /* for (String str : list) { if (str.equals("aa")) { list.remove(str); } } */ } } ``` - 注意事项:增强for循环不适合用于删除元素,当集合中有重复数据时,会报并发修改异常`ConcurrentModificationException`,偶尔在没有重复数据时可能会删除成功,但不建议使用[^2]。 ### Set集合 - **迭代器(Iterator)**: - 代码示例: ```java import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class SetDemo { public static void main(String[] args) { Set<String> set = new HashSet<>(); set.add("A"); set.add("B"); set.add("C"); Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) { String item = iterator.next(); if (item.equals("B")) { iterator.remove(); } } System.out.println(set); } } ``` - 注意事项:与List集合使用迭代器删除元素类似,必须使用`iterator.remove()`方法,避免使用集合的`remove()`方法,防止抛出`ConcurrentModificationException`异常。 ### Map集合 - **迭代器(Iterator)**: - 代码示例: ```java import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; public class MapDemo { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("A", 1); map.put("B", 2); map.put("C", 3); Iterator<Entry<String, Integer>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Entry<String, Integer> entry = iterator.next(); if (entry.getKey().equals("B")) { iterator.remove(); } } System.out.println(map); } } ``` - 注意事项:使用迭代器遍历`Map`的`entrySet()`,并使用`iterator.remove()`方法删除元素,避免使用`map.remove()`方法,防止抛出`ConcurrentModificationException`异常。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值