码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 2022-08-07 集合拓展---遍历


    目录

    List集合:

    1.for循环:

    2.增强for循环(foreach)

    3.迭代器:Iterator

    Set集合:

    1.增强for循环(foreach)

    2.迭代器:

    Map集合

    1.for循环

    2.增强for循环

    3.迭代器:

    删除相同元素:

    方法一:指针回调: 

    方法二:逆序删除:

    方法三:使用迭代器:

    方法四:增强for循环:

    总结:

    线程安全问题:


    List集合:

    1.for循环:

    1. for (int i = 0; i
    2. System.out.println(list.get(i));
    3. }

    2.增强for循环(foreach)

            其实foreach的原理就是迭代器,通过操作镜像集合/数组来进行更改。

    1. for (String s : list) {
    2. System.out.println(s);
    3. }

    3.迭代器:Iterator

    Iterator iterator = list.iterator();//泛型

    1. while(iterator.hasNext()){
    2. // iterator.hasNext();//是否有下一个
    3. String s = iterator.next();
    4. // iterator.remove();//删除当前元素
    5. System.out.println(s);
    6. // 指针后移(它自己会移)
    7. }

    Set集合:

    PS:不能用for循环

    1.增强for循环(foreach)

    map的遍历方法 有几种? 帮你选择最好的遍历方式
    text/x-java 5星 超过95%的资源 7KB
    下载
    1. for (Integer integer : set) {
    2. System.out.println(integer);
    3. }

    2.迭代器:

    1. Iterator<Integer> iterator = set.iterator();
    2. while(iterator.hasNext()){
    3. System.out.println(iterator.next());
    4. }

    Map集合

    1.for循环

    先获取key,通过key获取value的遍历方式

    1. Set<String> strings = map.keySet();
    2. for (String s : strings) {
    3. System.out.println(map.get(s));
    4. }

    2.增强for循环

    提一个新的类:Entry是hashMap的内部类,每一组键值对就是一个Entry

    通过Entry直接获取映射:

    1. Set<Map.Entry<String, String>> entries = map.entrySet();
    2. for (Map.Entry<String, String> entry : entries) {
    3. System.out.println(entry.getKey()+"->");
    4. System.out.print(entry.getValue());
    5. }

    3.迭代器:

    1. Set<String> strings1 = map.keySet();
    2. Iterator<String> iterator = strings1.iterator();
    3. while(iterator.hasNext()){
    4. String x = iterator.next();
    5. System.out.println(x+""+map.get(x));
    6. }

    删除相同元素:

    eg:有一个名为names的集合并添加元素:

    1. List names = new ArrayList<>();
    2. names.add("tom");
    3. names.add("lucy");
    4. names.add("jerry");
    5. names.add("lucy");
    6. names.add("lucy");
    js实例之集合遍历字符创修改
    zip 5星 超过95%的资源 1.63MB
    下载

    正常使用for删除是不能删除干净的:

    为什么?原因就是:打个比方:

    集合删除第二个元素之后,指针回跳到下一个也就是指向第三个元素,但是原本的第三个元素因为第二个元素删除了,它就变成了第二个元素,这样这个原本的第三个元素(现在的第二个元素)就没有被判断,所以就会产生这样删不干净的效果。

    方法一:指针回调: 

    1. for (int i = 0; i < names.size(); i++) {
    2. if(Objects.equals(names.get(i),"lucy")){
    3. names.remove(i);
    4. i--;
    5. //1.回调指针
    6. }
    7. }

    方法二:逆序删除:

    1. for (int i =names.size(); i>=0; i--) {
    2. if(Objects.equals(names.get(i),"lucy")){
    3. names.remove(i);
    4. }
    5. }

    方法三:使用迭代器:

    1. Iterator<String> iterator = names.iterator();
    2. while(iterator.hasNext()){
    3. String s= iterator.next();
    4. if(Objects.equals(s,"lucy")){
    5. iterator.remove();
    6. }
    7. }

    方法四:增强for循环:

    1. for (String name : names) {
    2. if(Objects.equals(name,"lucy")){
    3. names.remove(name);
    4. }
    5. }

    总结:

    遍历使用迭代器是最靠谱,最安全的,但是还是要看习惯和简单与否判断到底使用哪种。

    线程安全问题:

    并发修改异常

    用增强for循环底层是迭代器.

    迭代器是依赖于集合存在的,在判断成功后,集合中新增了元素

    迭代器不知道,所以就报错.

  • 相关阅读:
    关于Validation的方法使用
    windows安装linux部署docker服务全过程
    数据结构-单链表(增删查改)
    万字总结:分布式系统的38个知识点
    设计WebHook
    佳能相机拍出来的dat文件怎么修复为正常视频
    对接Web Services接口
    Jetpack Compose学习(10)——使用Compose物料清单BOM,更好管理依赖版本
    【leetcode】 最多删除一个字符得到回文
    C++ Primer Plus第五版笔记(p1-50)
  • 原文地址:https://blog.csdn.net/weixin_49627122/article/details/126211654
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号