数据结构复习1

1、什么是集合?

就是一组数据的集合体,就像篮子装着苹果、香蕉等等,这些“水果”就代表数据,“篮子”就是这个集合。

集合的特点:

集合用于存储对象。

对象是确定的个数可以用数组,如果不确定可以用集合,因为集合的长度是可以变化的。

集合和数组的区别:

数组的长度是固定的,集合的长度是可变的。

数组可以存储基本数据类型,也可以存储引用数据类型,而集合只能存储引用数据类型。

2、什么是集合框架?

就像是一个“工具箱”,里面装满了这种“容器”,这些“容器”都有自己的用途和特点。

(List、Set、Map)

3、什么是接口?

就是一种规范,规定了某个对象必须实现哪些方法,但不必关注如何具体实现,就像是去餐馆里点菜,只要点想要的菜,不需要知道菜是具体怎么做的。

4、什么是算法?

在一个实现了集合框架的接口的对象上完成某种有用的计算方法。

5、什么是数据结构?

就是容器中存储数据的方式。

使用一个体系的原则:参阅顶层内容,建立底层对象。

6、使用集合框架的好处

容量自增长。

提供了高性能的数据结构和算法。

允许不同API之间互相操作。

可以方便地扩展或改写集合。

通过使用JDK(Java开发工具包自带的集合类,可以代码维护和学习新API的成本。

7、常用的集合类有哪些?

常用的集合类主要分为两大类:实现Collection接口的集合类和实现Map接口的映射类。

Collection接口的子接口包括:List接口和Set接口。

List接口的实现类主要有:ArrayList、LinkedList、Vector等等。

Set接口的实现类主要有:HashSet、LinkedHashSet、TreeSet等等。

Map接口的实现类主要有:HashMap、LinkedHashMap、TreeMap等等。

8、List、Set、Map的区别

List:一个有序容器,可以存储重复元素,可以插入多个null元素,元素都有索引。

Set:一个无序容器,不可以存储重复元素,只允许插入一个null元素,必须确保元素的唯一性。

Map:是一个键值对集合,存储键和值之间的映射。Key无序,唯一;value不要求有序,可以不唯一。

9、集合框架底层数据结构

List接口:

ArrayList:Object数组,当添加或删除元素时,如果数组满了或者有空余空间,ArrayList会自动调整数组大小。

Vector:Object数组,线程安全。

LinkedList:双向链表,在开始和结束处添加或删除元素会非常快。

Set接口:

HashSet:无序、唯一,基于HashMap实现的,底层采用HashMap实现。

LinkedHashSet:和HashSet差不多,但它还有一个双向链表用来记录元素的插入顺序,所以遍历LinkedHashSet时,元素会按照被添加的顺序出现。

TreeSet:有序、唯一,通过红黑树来实现的(平衡二叉树)。

Map接口:

HashMap:在JDK1.8之前,它主要是由数组和链表组成的,数组是HashMap的主体,链表则主要是为了解决哈希冲突而存在的。从JDK1.8开始,如果链表太长(默认超过8个元素),就会转换为红黑树来优化性能。

LinkedHashMap:增加了一条双向链表,使得可以保持键值对的插入顺序。

HashTable:和HashMap类似,线程安全。

TreeMap:基于红黑树实现的。

10、哪些集合类是线程安全的?

Vector、Stack(堆栈类,先进后出)、HashTable、Enumeration(枚举,相当于迭代器)

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值