Java集合框架知识点

激励小故事:

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

日常鸡血:

在这里插入图片描述

问题:

思考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集合框架的结构:

在这里插入图片描述
点击查看高清图片

答案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迭代器不会抛出.

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

在这里插入图片描述

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

发布了3 篇原创文章 · 获赞 12 · 访问量 1230

猜你喜欢

转载自blog.csdn.net/weixin_45302340/article/details/103957267