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的新特性暂时用不到,还没学习到框架

目录
相关文章
|
17天前
|
存储 Java 开发者
Java Map实战:用HashMap和TreeMap轻松解决复杂数据结构问题!
【10月更文挑战第17天】本文深入探讨了Java中HashMap和TreeMap两种Map类型的特性和应用场景。HashMap基于哈希表实现,支持高效的数据操作且允许键值为null;TreeMap基于红黑树实现,支持自然排序或自定义排序,确保元素有序。文章通过具体示例展示了两者的实战应用,帮助开发者根据实际需求选择合适的数据结构,提高开发效率。
49 2
|
2天前
|
JSON BI API
商城上货API接口的实战案例
在商城上货过程中,API接口扮演着至关重要的角色。以下是对商城上货API接口的实战分析,涵盖其主要功能、类型、安全性以及实战案例等方面。
|
2天前
|
缓存 监控 Java
如何运用JAVA开发API接口?
本文详细介绍了如何使用Java开发API接口,涵盖创建、实现、测试和部署接口的关键步骤。同时,讨论了接口的安全性设计和设计原则,帮助开发者构建高效、安全、易于维护的API接口。
16 4
|
23天前
|
存储 消息中间件 安全
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
【10月更文挑战第9天】本文介绍了如何利用JUC组件实现Java服务与硬件通过MQTT的同步通信(RRPC)。通过模拟MQTT通信流程,使用`LinkedBlockingQueue`作为消息队列,详细讲解了消息发送、接收及响应的同步处理机制,包括任务超时处理和内存泄漏的预防措施。文中还提供了具体的类设计和方法实现,帮助理解同步通信的内部工作原理。
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
|
3天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
11 1
|
8天前
|
存储 JSON API
淘宝API接口实战:高效获取商品标题、分类及店铺名称
在淘宝API接口实战中,通过以下步骤高效获取商品标题、分类及店铺名称:1. 准备工作:了解淘宝开放平台文档,注册开发者账号,选择开发语言和工具。2. 获取API访问权限:申请相应权限,提供应用场景说明。3. 调用API接口:构建HTTP请求,提供必要参数。4. 解析响应数据:提取JSON数据中的所需信息。5. 数据处理和存储:进一步处理并存储数据。6. 注意事项:遵守使用规范,注意调用频率和数据安全。示例代码使用Python调用淘宝API。
|
11天前
|
Java API 数据处理
探索Java中的Lambda表达式与Stream API
【10月更文挑战第22天】 在Java编程中,Lambda表达式和Stream API是两个强大的功能,它们极大地简化了代码的编写和提高了开发效率。本文将深入探讨这两个概念的基本用法、优势以及在实际项目中的应用案例,帮助读者更好地理解和运用这些现代Java特性。
|
17天前
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
|
20天前
|
开发框架 Java 程序员
揭开Java反射的神秘面纱:从原理到实战应用!
本文介绍了Java反射的基本概念、原理及应用场景。反射允许程序在运行时动态获取类的信息并操作其属性和方法,广泛应用于开发框架、动态代理和自定义注解等领域。通过反射,可以实现更灵活的代码设计,但也需注意其性能开销。
36 1
|
22天前
|
移动开发 前端开发 JavaScript
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
114 0