简述Java集合辨析理论题

3 篇文章 0 订阅

理论知识辨析

1. 顺序存储结构和链式存储结构的特点、优缺点对比
顺序表:
  特点:
  在内存中分配连续的空间只存储数据,不需要存储地址信息,逻辑上相邻的元素,物理位置上也相邻。
  优点:
1,节省存储空间。因为分配给数据的存储单元全用来存放结点数据,结点之间扽逻辑关系没有占用额外的存储空间。
2,索引查询效率高。每个结点对应一个序号,由序号可以直接计算出结点的存储地址。
  缺点:
1,插入和删除操作需要移动元素,效率较低。
2,必须提前分配好固定数量的空间,如果存储元素少。可能导致空闲浪费。
3,按照内容查询的效率低,因为需要逐个比较判断。

链式表:
  特点:
  数据元素的存储对应的是不连续的存储空间,每个存储结点对应一个需要存储的数据元素。每个结点是由数据域和指针域组成。元素之间的逻辑关系通过存储节点之间的链接关系反映出来。逻辑上相邻的节点物理上不必相邻。
  优点:
1,插入、删除灵活(不需要移动节点,只需要节点的指针,但是首先需要定位到该元素上)
2,有元素才会分配结点空间,不会有闲置的结点。
  缺点:
1,比顺序存储结构的存储密度小。(数据和指针域)
2,查找结点时链式存储要比顺序存储。(地址不连续,无规律,导致按照索引查询效率低下)

2. Iterator迭代器和for-each循环
问题一:哪些集合可以使用Iterator遍历
  层次一:Collection、List、Set可以,Map不可以。
  层次二:提供iterator()方法的就可以将元素交给Iterator。
  层次三:实现Iterable接口的集合类都是可以使用迭代器遍历
问题二:for-each循环和Iterator的联系
联系:
  for-each循环遍历集合时,底层使用的是Iterator
  凡是可以使用for-each循环,肯定也可以使用Iterator进行遍历。
区别:
  使用for-each遍历集合时不能删除元素,会抛出异常ConcurrentModificationException。
  使用Iterator遍历集合时能删除元素,使用Iterator内部自带删除方法。
为什么要把Iterator设置成一个接口?
  不同的集合类,底层结构不同,迭代的方式不同,所以提供一个接口,让相应的实现类来实现。

2. ListIterator和Iterator的区别
使用范围不同:
  Iterator可以应用于更多的集合,Set、List和这些集合的子类型.
  ListIterator只能用于List及其子类型。
遍历循序不同:
  Iterator只能循序向后遍历;
  ListIterator还可以逆序向前遍历
性能机制;
  Iterator只能在遍历的过程中使用remove();
  ListIterator可以在遍历的过程中使用remove()、add()、set()
  ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。
  Iterator没有此功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java集合体系是Java中非常重要和常用的一部分,主要由四个核心接口:Collection、List、Set和Map组成。 Collection接口是集合体系的父接口,它是最基本的集合接口。它包含了一些常用的集合操作方法,如添加、删除、查找、遍历等。它的两个主要子接口是List和Set。 List接口代表了有序的集合,它的实现类有ArrayList、LinkedList和Vector等。List集合可以保留元素的插入顺序,并且允许重复元素存在。 Set接口代表了不允许重复元素的集合,它的实现类有HashSet、TreeSet和LinkedHashSet等。Set集合不保留元素的插入顺序,其主要特点是保证集合中没有重复的元素。 Map接口代表了键值对的集合,它的实现类有HashMap、TreeMap和LinkedHashMap等。Map集合中的键是唯一的,通过键可以快速查找对应的值。Map集合提供了根据键来存取数据的操作。 除了以上四个核心接口,还有许多与集合相关的类,如Stack、Queue、PriorityQueue等。它们都是集合的扩展和补充。 Java集合体系具有很高的灵活性和扩展性,能够满足各种不同的需求。通过不同的集合类型和方法的运用,我们可以更高效地管理和操作数据。在实际应用中,根据具体的业务需求,选择合适的集合类型和方法进行使用,能够提高程序的性能和效率。 总结来说,Java集合体系是非常重要的一部分,掌握了集合的基本使用方法和常见操作,对于Java程序的开发和设计是非常有帮助的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值