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

目录
相关文章
|
22天前
|
Java API C++
Java 8 Stream Api 中的 peek 操作
本文介绍了Java中`Stream`的`peek`操作,该操作通过`Consumer&lt;T&gt;`函数消费流中的每个元素,但不改变元素类型。文章详细解释了`Consumer&lt;T&gt;`接口及其使用场景,并通过示例代码展示了`peek`操作的应用。此外,还对比了`peek`与`map`的区别,帮助读者更好地理解这两种操作的不同用途。作者为码农小胖哥,原文发布于稀土掘金。
Java 8 Stream Api 中的 peek 操作
|
11天前
|
缓存 负载均衡 Dubbo
Dubbo技术深度解析及其在Java中的实战应用
Dubbo是一款由阿里巴巴开源的高性能、轻量级的Java分布式服务框架,它致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
32 6
|
9天前
|
Java 程序员 API
Java 8新特性之Lambda表达式与Stream API的探索
【9月更文挑战第24天】本文将深入浅出地介绍Java 8中的重要新特性——Lambda表达式和Stream API,通过实例解析其语法、用法及背后的设计哲学。我们将一探究竟,看看这些新特性如何让Java代码变得更加简洁、易读且富有表现力,同时提升程序的性能和开发效率。
|
7天前
|
SQL Java Linux
Java 8 API添加了一个新的抽象称为流Stream
Java 8 API添加了一个新的抽象称为流Stream
|
13天前
|
Java
领略Lock接口的风采,通过实战演练,让你迅速掌握这门高深武艺,成为Java多线程领域的武林盟主
领略Lock接口的风采,通过实战演练,让你迅速掌握这门高深武艺,成为Java多线程领域的武林盟主
22 7
|
10天前
|
存储 前端开发 API
告别繁琐,拥抱简洁!Python RESTful API 设计实战,让 API 调用如丝般顺滑!
在 Web 开发的旅程中,设计一个高效、简洁且易于使用的 RESTful API 是至关重要的。今天,我想和大家分享一次我在 Python 中进行 RESTful API 设计的实战经历,希望能给大家带来一些启发。
25 3
|
10天前
|
Java
flyway报错Caused by: java.lang.NoSuchMethodError: org.flywaydb.core.api.configuration.FluentConfigurat
flyway报错Caused by: java.lang.NoSuchMethodError: org.flywaydb.core.api.configuration.FluentConfigurat
14 2
|
14天前
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
在Android应用开发中,追求卓越性能是不变的主题。本文介绍如何利用Android NDK(Native Development Kit)结合Java与C++进行混合编程,提升应用性能。从环境搭建到JNI接口设计,再到实战示例,全面展示NDK的优势与应用技巧,助你打造高性能应用。通过具体案例,如计算斐波那契数列,详细讲解Java与C++的协作流程,帮助开发者掌握NDK开发精髓,实现高效计算与硬件交互。
54 1
|
25天前
|
监控 Java 大数据
【Java内存管理新突破】JDK 22:细粒度内存管理API,精准控制每一块内存!
【9月更文挑战第9天】虽然目前JDK 22的确切内容尚未公布,但我们可以根据Java语言的发展趋势和社区的需求,预测细粒度内存管理API可能成为未来Java内存管理领域的新突破。这套API将为开发者提供前所未有的内存控制能力,助力Java应用在更多领域发挥更大作用。我们期待JDK 22的发布,期待Java语言在内存管理领域的持续创新和发展。
|
21天前
|
存储 负载均衡 Java
Jetty技术深度解析及其在Java中的实战应用
【9月更文挑战第3天】Jetty,作为一款开源的、轻量级、高性能的Java Web服务器和Servlet容器,自1995年问世以来,凭借其卓越的性能、灵活的配置和丰富的扩展功能,在Java Web应用开发中占据了举足轻重的地位。本文将详细介绍Jetty的背景、核心功能点以及在Java中的实战应用,帮助开发者更好地理解和利用Jetty构建高效、可靠的Web服务。
32 2
下一篇
无影云桌面