跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Java 集合体系与 Collection 遍历方法

Java 集合体系,包括 Collection 单列集合与 Map 双列集合的区别,以及 List 和 Set 的特性。详细讲解了 Collection 的三种遍历方式:迭代器、增强 for 循环和 Lambda 表达式 forEach 方法。通过电影存储与查找的案例演示了集合的实际应用,并简要分析了对象在堆栈内存中的存储与访问原理。

古灵精怪发布于 2026/3/21更新于 2026/7/2347 浏览
Java 集合体系与 Collection 遍历方法

集合体系

Collection 单列集合,Map 双列集合。

img

集合特点:

  • List 集合:添加的元素是有序、可重复、有索引
    • ArrayList、LinkedList:有序、可重复、有索引
  • Set 集合:添加的元素是无序、不重复、无索引
    • HashSet:无序、不重复、无索引
    • LinkedHashSet:有序、不重复、无索引
    • TreeSet:按照大小默认升序排序、不重复、无索引

Collections1.java

package com.example.collections;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

public class Collections1 {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("山");
        c.add("重");
        c.add("水");
        c.add("复");
        System.out.println(c);
        c.clear();
        System.out.println(c);
        System.out.println(c.isEmpty());
        System.out.println(c.size());
        c.add("山");
        c.add("重");
        c.add("水");
        c.add("复");
        System.out.println(c.contains("山"));
        System.out.println(c.contains(null));
        System.out.println(c.remove("山"));
        System.out.println(c);
        Object[] arr = c.toArray();
        System.out.println(Arrays.toString(arr));
        String[] arr2 = c.toArray(new String[c.size()]);
        System.out.println(Arrays.toString(arr2));
        // 把一个集合的数据全部添加到另一个集合中
        Collection<String> c1 = new ArrayList<>();
        c1.add("山");
        c1.add("重");
        Collection<String> c2 = new ArrayList<>();
        c2.add("水");
        c2.add("复");
        c1.addAll(c2);
        System.out.println(c1);
        System.out.println(c2);
    }
}

打印结果

[山,重,水,复]
[]
true
0
true
false
true
[重,水,复]
[重,水,复]
[重,水,复]
[山,重,水,复]
[水,复]

Collection 的遍历方式

三种方式

  • 迭代器:来遍历集合的专用方式

img

img

  • 增强 for 循环:用来遍历集合或数组

  • Lambda 表达式:forEach 方法

img

Collections2.java

package com.example.collections;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.function.Consumer;

public class Collections2 {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("山");
        c.add("重");
        c.add("水");
        c.add("复");
        System.out.println(c);
        // 迭代器
        Iterator<String> it = c.iterator();
        while (it.hasNext()) {
            System.out.print(it.next());
        }
        System.out.println();
        // 增强 for 循环
        for (String ele : c) {
            System.out.print(ele);
        }
        System.out.println();
        // Lambda 表达式
        c.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.print(s);
            }
        });
        System.out.println();
        c.forEach((String s) -> {
            System.out.print(s);
        });
        System.out.println();
        c.forEach(s -> {
            System.out.print(s);
        });
        System.out.println();
        c.forEach(System.out::print);
        System.out.println();
    }
}

打印结果

[山,重,水,复]
山重水复
山重水复
山重水复
山重水复
山重水复
山重水复

案例

实现电影的存储与查找

Movie.java

package com.example.collections;

public class Movie {
    private String name;
    private double score;
    private String actor;

    public Movie() {
    }

    public Movie(String name, double score, String actor) {
        this.name = name;
        this.score = score;
        this.actor = actor;
    }

    @Override
    public String toString() {
        return "Movie{" +
                "name='" + name + '\'' +
                ", score=" + score +
                ", actor='" + actor + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }
}

Collections3.java

package com.example.collections;
import java.util.ArrayList;
import java.util.Collection;

public class Collections3 {
    public static void main(String[] args) {
        Collection<Movie> movies = new ArrayList<>();
        movies.add(new Movie("肖申克的救赎", 9.7, "罗宾斯"));
        movies.add(new Movie("霸王别姬", 9.6, "张国荣、张丰毅"));
        movies.add(new Movie("阿甘正传", 9.5, "汤姆·汉克斯"));
        for (Movie movie : movies) {
            System.out.println("电影名:" + movie.getName());
            System.out.println("评分:" + movie.getScore());
            System.out.println("主演:" + movie.getActor());
        }
    }
}

打印结果

电影名:肖申克的救赎
评分:9.7
主演:罗宾斯
电影名:霸王别姬
评分:9.6
主演:张国荣、张丰毅
电影名:阿甘正传
评分:9.5
主演:汤姆·汉克斯

执行原理

先在栈内存中加载 main 方法,并创建变量 movies,在堆内存中开辟空间,准备存储 ArrayList,并将当前地址传给 movies 变量进行存储;在 movies 中添加新的对象时,先在堆内存中开辟空间,将新的对象的地址传入到 movies 对应的地址中进行存储;最后打印时,获取 movies 中某个地址指向的对象,并获取其信息打印。

img

目录

  1. 集合体系
  2. Collection 的遍历方式
  3. 三种方式
  4. 案例
  5. 执行原理
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 基于FPGA的毕业设计效率提升:从串行仿真到并行硬件加速
  • AG-UI:连接 AI 智能体与用户应用的开放协议
  • VR 与 AR 技术深度解析:原理、应用与未来趋势
  • VR、具身智能与人形机器人:构建现实世界的智能接口
  • C++ 异常处理机制深度解析
  • AI Agent 赋能新闻媒体:自动写作与内容分发实践
  • Midjourney 第三方 API 的实现方式与合规边界
  • AJAX 与 Fetch:异步 Web 请求实战对比
  • Mac Mini 部署 OpenClaw 智能体实战指南
  • VS Code GitHub Copilot 授权失败排查与修复指南
  • Java Web 开发环境搭建:IDEA 与 Tomcat 安装部署
  • IDE 调用大模型的 Session 机制与最佳实践
  • Z-Image-Turbo 实战指南:零基础快速上手 AI 绘画
  • Agent Skills 版本控制与管理实战
  • Linux 进程间通信进阶:管道与共享内存
  • 深入解析 PX4 无人机仿真:Offboard 模式下的精准定点控制
  • CSS 元素显示模式详解:块级、行内与行内块
  • Gitee 轻量级 PR:降低开源贡献门槛的便捷方式
  • C++核心特性解析:函数重载、引用、内联函数、auto 与 nullptr
  • SpringBoot + Vue 构建 Python 在线调试器方案

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online