当前位置:首页 > Java技术 > Java集合框架知识点

Java集合框架知识点

2022年08月06日 15:03:48Java技术6

激励小故事:

激励小故事:当老虎来临时
  两个人在森林里,遇到了一只大老虎。A就赶紧从背后取下一双更轻便的运动鞋换上。B急死了,骂道:“你干嘛呢,再换鞋也跑不过老虎啊!”
  A说:“我只要跑得比你快就好了。”
  感悟:二十一世纪,没有危机感是最大的危机。特别是入关在即,电信,银行,保险,甚至是公务员这些我们以为非常稳定和有保障的企业,也会面临许多的变数。当更多的老虎来临时,我们没有有准备好自己的跑鞋?

日常鸡血:

Java集合框架知识点 _ JavaClub全栈架构师技术笔记

问题:

思考01:什么是Java集合框架?

思考02:集合框架有什么优点?

思考03:集合框架中泛型有什么优点?

思考04:Java框架的基础接口有哪些?

思考05:为何 Map接口 不继承 Collection接口?

思考06:Iterator 是什么?

思考07:Enumeration和Iterator接口的区别?

思考08:Iterator和ListIterator之间有什么区别?

思考09:遍历一个List有哪些不同的方法?

思考10:通过迭代器的 fail-fast属性,你能明白什么?

思考11:fail-fast 和 fail-safe 有什么区别?

答案:

首先要了解Java集合框架的结构:

Java集合框架知识点 _ JavaClub全栈架构师技术笔记
点击查看高清图片

答案01:什么是Java集合框架?

    每种编程语言都有集合,最初的Java版本包含几种集合类:Vector,Stack,HashTable和Array.
    随着集合的广泛使用,Java1.2提出了囊括所有集合接口,实现和算法的集合框架.
    在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久.他还包括在Java并发包中,阻塞接口以及他们的实现。

答案02:集合框架有什么优点?

  • 使用核心集合类降低开发成本,而非实现我们自己的集合类。
  • 随着使用经过严格测试的集合框架类,代码质量会得到提高。
  • 通过使用JDK自带的集合类,可以降低代码维护成本。
  • 复用性和可操作性。

答案03:集合框架中泛型有什么优点?

 Java1.5引入泛型,所有的集合接口和实现都大量的使用它.泛型允许我们为集合提供一个可以容纳的对象类型.
 因此,如果你添加其他类型的任何元素,他都会在编译时报错.这避免了在运行时出现ClassCastException,
 因为你将会在编译时得到报错信息.泛型也使得代码整洁,我们不需要使用显示转换和instanceOf操作符.
 他也给运行是带来好处,因为不会产生类型检查的字节码指令.

答案04:Java框架的基础接口有哪些?

  • Collection:集合层级的根接口.一个集合代表一组对象,这些对象即为他的元素.Java平台不提供这个接口的任何直接的实现.
  • Set:一个不能包含重复元素的集合.这个接口对数学集合抽象进行建模,被用来代表集合,就如同一副牌.
  • List:有序集合,可以包含重复元素.你可以通过他的索引来访问任何元素,List更像长度动态变化的数组.
  • Map:一个将Key映射到value的对象,一个Map不能包含重复的Key;每个Key最多只能映射一个value.

答案05:为何 Map接口 不继承 Collection接口?

 尽管Map接口和他的实现也是集合框架的一部分,但是Map不是集合.集合也不是Map.
 因此,Map继承Collection毫无意义,反之亦然.如果Map继承Collection接口,那么元素去哪儿?
 Map是包含Key-Value对,他提供抽取Key和value列表集合的方法,但是他不适合”一组对象”的规范.

答案06:Iterator 是什么?

 Iterator接口提供了遍历任何Collection的接口.我们可以从一个Collection中使用迭代器方法来获取迭代器实例.
 迭代器取代了Java集合框架中的Enumeration.迭代器允许调用者在迭代过程中移除元素.

答案07:Enumeration和Iterator接口的区别?

 Enumeration的速度是Iterator的两倍,也使用更少的内存.Enumeration是非常基础的.也满足了基础的需要.
 但是,与Enumeration相比,Iterator更加安全,因为当一个集合正在被遍历的时候,他会阻止其他线程去修改集合.

 迭代器取代了Java集合框架中的Enumeration.迭代器允许调用者从集合中移除元素,而Enumeration不能做到.
 为了使他的功能更加的清晰,迭代器方法名已经进过改善.   

答案08:Iterator和ListIterator之间有什么区别?

  • 我们可以使用Iterator来遍历Set和List,而ListIterator只能遍历List.
  • Iterator只可以向前遍历,而ListIterator可以双向遍历.
  • ListIterator从Iterator接口继承,然后添加了一些额外的功能,比如添加一个元素,替换一个元素,获取前面或后面元素的索引位置.

答案09:遍历一个List有哪些不同的方法?

        List<Integer> list = new ArrayList<>();
		//使用for-each循环
		for (Integer num : list) {
     
			System.out.println(num);
		}
		//使用iterator
		Iterator<Integer> it = list.iterator();
		while(it.hasNext()){
     
			Integer next = it.next();
			System.out.println(next);
		}
使用迭代器可以确保线程安全,因为在迭代遍历的集合元素被更改的时候,会抛出ConcurrentModificationException异常.

答案10:通过迭代器的 fail-fast属性,你能明白什么?

 每次我们尝试获取下一个元素的时候,Iterator 的fail-fast属性检查当前集合结构里的任何改动.
 如果发现任何改动他就会抛出ConcurrentModificationExcption.
 Collection中所有的Iterator的实现都是按照fail-fast(快速失败)来设计的.
 (ConcurrentHashMap和CopyOnWriteArrayList这类并发集合类除外)

答案11:fail-fast 和 fail-safe 有什么区别?

 Iterator的fail-fast属性与当前的集合共同起作用,因此他不会受到集合中任何改动的影响.
 java.util包中所有集合类都被设计为fail-fast的.而java.util.concurrent的集合类都为fail-safe的.

 Fail-fast迭代器会抛出ConcurrentModificationException,而fail-safe迭代器不会抛出.

励志小短句 --> 坚持自己的梦想,即使没有翅膀也能飞翔。

Java集合框架知识点 _ JavaClub全栈架构师技术笔记

如果对大家有所帮助的话,要点赞奥~~~
有错误的地方,欢迎下方评论,我每天都看~~~

作者:JavaHeartBeat
来源链接:https://blog.csdn.net/weixin_45302340/article/details/103957267

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/18406.html

标签: Java集合Java
分享给朋友:

“Java集合框架知识点” 的相关文章

Java空指针异常解决java.lang.NullPointerException解决心得

Java空指针异常解决java.lang.NullPointerException解决心得

今天做课设的时候运行程序报出以下错误 java.lang.NullPointerException 首先要理解的是此错误并不会在 程序中报错,只会在运行的时候报错。 是由于某个参数(集合,数组等数据)可能出现一个null值而导致后面的程序不能运行时...

一分钟搞定Java环境变量配置

一分钟搞定Java环境变量配置

对于学Java的人来说,成功配置环境变量是第一步,因为后期不论 你做什么工作,会发现都需要这些,接下来介绍如何安装与配置,我按照jdk1.6来说明,其他一致。 下载官网 首先将jdk安装好后进行配置。 右击“计算机”,右键打开“属性”,...

Java实现Email发送

一、前言最近将项目的登录密码从图形验证码改为了短信验证码,同时也将忘记密码时长度进行了修改,在修改时,想到了之前在一些国外的网站上,使用过邮箱接收验证码的情况,故想到何妨不自己尝试整合一下Java程序发送邮件信息呢,所以动手整合了Email的发送实例。二、Email发送协议想要在互联网上提供电子邮件...

Java中四种访问修饰符的区别

在java中共有4种访问级别,按访问权限由高到低为:public(公有的)、protected(受保护的)、友好的(没有任何访问权限关键字修饰)和private(私有的)。 类型 类内部 同一个包其...

Java 内存模型

Java 内存模型

📦 本文以及示例源码已归档在 javacore Java 内存模型(Java Memory Model),简称 JMM。 JVM 中试图定义一种 JMM 来屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。...

Java虚拟机1:什么是Java

Java虚拟机1:什么是Java

前言 让我们来看一下Java的广告词,来自http://www.java.com/zh_CN/about/: 97%的企业桌面运行Java 美国有89%的桌面(或计算机)运行Java 全球有900万Java开发人员 开发人员的头号选择...

Java日志框架那些事儿

Java日志框架那些事儿

在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此对于一个项目而言,日志记录是一个非常重要的问题。因此,如何选择一个合适的日志记录框架也非常重要。在Java开发中,常用的日志记录框架有JDKLog、Log4J、LogBack、SLF4J...

JDBC连接时所犯错误1.字符集设置不合适2.连接MySQL8.0社区版时时区不一致3..包名不能以Java.命名4.驱动被弃用

Microsoft JDBC Driver 的主页为:https://msdn.microsoft.com/en-us/data/aa937724.aspx 下载所需驱动 今天连接时报了四次错,记录下来 1.java.sql.SQLException:...

枚举法 之Java实现凑硬币

问题? 如何利用1元五元十元凑硬币 Scanner in=new Scanner(System.in); int amout ; amout=in.nextInt(); for(int one =0;one<=amout;one+...

Java实现阶乘运算

n!=123*…n 学习编程就是要了解从问题到程序是如何实现的 Scanner in=new Scanner(System.in); int n ; n=in.nextInt(); // int i=1; int factor=1;...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。