8:Java Conllections FrameWork-Java API 实战(下)

简介: 8:Java Conllections FrameWork-Java API 实战

6. ArrayList第三讲


索引(下标)是从0开始的


.indexOf()方法用于查找元素首个下标


.lastIndexOf()方法用于查找元素最后一个下标



.isEmpty()方法用于检查集合是否为空



.remove()方法用于删除元素,默认根据下标删除,可以根据objectindex删除



.removeAll()方法用于移除所有元素



.replaceAll()方法用于替换所有元素


.toLowerCase()用于转换成小写


.toUpperCase()用于转换成大写


.retainAll()方法用于取交集



.set()方法用于给指定的下标元素设置值



.sort()方法用于排序,默认从小到大



.reverse()方法用于置反集合



.subList()方法用于切割容器,需要注意截止于前一个元素



7. Linked链表


  • ArrayList数组集合,增删慢,查询快


  • LinkedList链表集合,增删快,查询慢


8. LinkedList一带而过


  • 链表是数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址


  • 链表可分为单向链表和双向链表


  • Java LinkedList类似于 ArrayList,是一种常用的数据容器



9. 提醒


  • 多看JDK文档,多练习,把基础打好


10. iterator 迭代器初试


  • 迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需目标或结果


  • 每一次对过程的重复被称为一次“迭代”,而每一次迭代的结果会被用来作为下一次迭代的初始值


迭代器Iterator,不管用于ArrayList还是LinkedList都可以迭代输出




迭代器类似用链表的形式去迭代,也可以指定泛型



11. fori、增强for、迭代器的区别、注意事项和分别用途


  • fori适合数据的读取与修改


  • for each适合数据的读取


  • Iterator不要使用嵌套,适合数据的读取与修改


for each绝对不能与.remove()方法一起使用,危险会导致所有数据删除



for each已经是一个小型的迭代器了,如果一定要修改集合的话可以使用迭代器,但不建议在for each中使用对象引用去修改元素


12. 谈谈三者性能


比较时间复杂度,foreach和迭代器谁更快呢?


  • 如果是 ArrayList ,用三种方式遍历的速度是for>Iterator>foreach,速度级别基本一致,一般都会用for或者for each,因为Iterator写法相对复杂一些


  • 如果是 LinkedList,则三种方式遍历的差距很大了,数据量大时越明显,Iterator>foreach>>>for,推荐使用foreach或者Iterator


参考:List遍历:for,foreach Iterator 速度比较


13. Set和HashSet


  • HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合,允许有 null 值,是无序的,即不会记录插入的顺序


  • HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的,必须在多线程访问时显式同步对HashSet 的并发访问


HashSet 实现了 Set 接口



使用Hash函数实现HashSet,元素无序,且不重复



参考:关于Java的Hash算法的深入理解


14. LinkedHashSet


如果要创建有序集合呢?LinkedHashSet便是有序的



15. Map、HashMap、Entry


java.util.Map下的接口和继承类关系简易结构图:



HashMap是映射关系,即键KeyValue



HashMap不能使用迭代器Iterator



.replace()方法可以替换键Key对应的值Value



Key以集合形式输出,.keySet()方法返回值是HashMapKey值的集合



HashMap以集合形式输出, .entrySet()方法的返回值也是Set集合



16. Map注意点


已经存在的键值对,再次.put()会替换原来的,.get()不存在的值会返回null



17. Entry与Map转换Set之后遍历: Iterator<Entry<Integer,Integer>> iterator = entrySet.iterator(); (什么?看不懂这行?)


  • Entry就是用来管理键值对对象的,将对象包裹起来,提供遍历的方式


  • Entry可以使用迭代器,筛选值,但只适合在内存中使用,不适用于JDBC



18. 提及 LinkedHashMap以及课后作业


HashMap是无序的,可以自定义泛型,而LinkedHashMap相当于有序的HashMap,可以自己写一个包括增删改查的学生管理系统了



19. 集合框架部分结束


剩下的类需要自己去学习了!了解各类是怎么实现的,以及其之间的区别,JDK的新特性暂时用不到,还没学习到框架

目录
相关文章
|
26天前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
27天前
|
缓存 自然语言处理 API
阿里巴巴国际站关键字搜索 API 实战:3 步搞定多语言适配 + 限流破局,询盘量提升 40%
跨境电商API开发常陷合规、多语言、限流等坑。本文详解从国际合规(GDPR/CCPA)到参数优化、数据结构化及区域化搜索的全链路方案,附Python代码模板与缓存重试架构,助力提升调用成功率至99%+,精准询盘增长42%。
|
30天前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
1月前
|
安全 Java 开发者
告别NullPointerException:Java Optional实战指南
告别NullPointerException:Java Optional实战指南
227 119
|
1月前
|
开发者 API 机器学习/深度学习
淘宝 / 1688 / 义乌购图搜 API 实战指南:接口调用与商业场景应用
本文详解淘宝、1688、义乌购三大平台图片搜索接口的核心特点、调用流程与实战代码。涵盖跨平台对比、参数配置、响应解析及避坑指南,支持URL/Base64上传,返回商品ID、价格、销量等关键信息,助力开发者快速实现商品识别与比价功能。
淘宝 / 1688 / 义乌购图搜 API 实战指南:接口调用与商业场景应用
|
1月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通
|
2月前
|
人工智能 运维 监控
阿里云 API 聚合实战:破解接口碎片化难题,3 类场景方案让业务响应提速 60%
API聚合破解接口碎片化困局,助力开发者降本增效。通过统一中间层整合微服务、第三方接口与AI模型,实现调用次数减少60%、响应提速70%。阿里云实测:APISIX+函数计算+ARMS监控组合,支撑百万级并发,故障定位效率提升90%。
242 0
|
2月前
|
人工智能 Java API
Java AI智能体实战:使用LangChain4j构建能使用工具的AI助手
随着AI技术的发展,AI智能体(Agent)能够通过使用工具来执行复杂任务,从而大幅扩展其能力边界。本文介绍如何在Java中使用LangChain4j框架构建一个能够使用外部工具的AI智能体。我们将通过一个具体示例——一个能获取天气信息和执行数学计算的AI助手,详细讲解如何定义工具、创建智能体并处理执行流程。本文包含完整的代码示例和架构说明,帮助Java开发者快速上手AI智能体的开发。
874 8
|
2月前
|
JSON API 调度
Midjourney 技术拆解与阿里云开发者实战指南:从扩散模型到 API 批量生成
Midjourney深度解析:基于优化Stable Diffusion,实现文本到图像高效生成。涵盖技术架构、扩散模型原理、API调用、批量生成系统及阿里云生态协同,助力开发者快速落地AIGC图像创作。
430 0
|
2月前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理