A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2019-10-11 17:23  /  1459 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


1.请用自己的语言描述集合体系
集合体系的单列集合的顶层是Collection接口,Collection下有两个子接口为List接口(有序)和Set(无序)接口。
List接口下有两个它实现类ArrayList集合和LinkedList集合。Set接口下有两个实现类HashSet集合和TreeSet集合。

2.List接口有什么特点
List接口是有序的,可重复的,带索引方法的。里面的元素会按照指定的顺序进行排列/输出,元素可以重复,并且有索引,可以对每一个元素进行精准的操作,所存储的的元素内容可以为Null.
               
3.对于List集合,遍历有几种方式
有三种遍历方式:
(1)迭代器-Collection集合的通用遍历方式,在LinkedList集合中还可以使用列表迭代器遍历。如必须要使用迭代器遍历集合,有需要在遍历时增删改元素就使用LinkedList集合,并使用列表迭代器,否则会出现并发修改异常。
(2)普通for循环(有索引):好处就是迭代器没有的,可以在遍历时增删改元素。
(3)增强for循环(最简单)


4.ArrayList和LinkedList集合各自有什么特点,为什么?
ArrayList集合是一个查询快,增删慢的集合,它的底层是一个数组,如果创建一个数组就要在内存中开辟一块连续的空间,开辟空间之后数组的长度就是固定的,如果再想增删元素就要重新开辟一块新的空间,复制之前的数组到新的空间的新的数组,再把新元素增删处理,这是它增删慢的原因。而因为在同一个地址里,所以查询会比较快。
LinkedList集合是一个查询慢,增删快的集合,它的底层是一个链表,它不要求有连续的空间,只要有内存就可以存储,所包含的每一个元素都有自己的一个地址值,并且指向下一个元素的地址值,当需要在两个元素中间插入一个新元素时,只需要将前一个元素指向的地址值修改成新增元素的地址,而新增元素再指向下一个元素的地址即可,所以它的增删改没有像数组那么繁琐。也因它的存储空间不是连续的,所以当我们需要找到一个元素时,需要像数数一样从头到尾一个一个找,所以查询较慢。
我们可以根据自己的需求来决定使用哪一个集合更方便。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马