2015年12月24日19:56:51
Java高级部分容器重点总结上
作者:数据分析玩家
1、简述容器和数据结构的关系
容器涉及到了数据的存储,而数据的存储是是数据结构的内容
2、简述容器的定义
在Java当中,如果有一个类专门用来存放其它类的对象,这个类就叫做容器,或者就叫做集合,集合就是将若干性质相同或相近的类对象组合在一起而形成的一个整体
容器一定是类,但类不一定是容器
3、容器里面既然只能存放类对象,如何理解LL.add(123)?
所有的容器里面只能存放类对象不能存放孤立的数值,但是Java中自动装箱的技术可以将一个孤立的数值自动封装成一个类对象,即Java中自动装箱的技术最终将孤立的数值123封装成一个内核是123的Integer对象,原代码等价于LL.add(new Integer(123))。
4、简述容器与数组的关系
之所以需要容器:
1、数组的长度难以扩充
2、数组中数据的类型必须相同
容器与数组的区别与联系:
1、容器不是数组,不能通过下标的方式访问容器中的元素
2、数组的所有功能通过Arraylist容器都可以实现,只是实现的方式不同
3、如果非要将容器当做一个数组来使用,通过toArraylist方法返回的就是一个数组
5、如何理解容器中无序与有序的概念
1、所谓无序指的是放进容器中对象的顺序与从容器中取出对象的顺序不一样,而有序指的放进容器中对象的顺序与从容器中取出对象的顺序一样
2、无序容器里面存放的类对象无需实现comparable接口,因为无序容器里面的类对象无需比较,即放在Set容器里面的类对象无需实现comparable接口,但是TreeSet容器特殊,因为TreeSet是以树为核心的,元素放进去的时候自然而然就有序了
3、对于容器,如果容器中存放的是java中自带的类对象,则不用补充重写任何代码,但是如果容器中存放的是用户自定义的类对象,则往往需要补充一些代码
6、简述容器【集合】的分类以及相应存储的特点
容器分为Set集、List列表、Map映射
Set集合:由于内部存储结构的特点,Set集合中不区分元素的顺序,不允许出现重复的元素,TreeSet容器特殊,元素放进去的时候自然而然就有顺序了,Set容器可以与数学中的集合相对应
List列表:由于内部存储结构的特点,List集合中区分元素的顺序,且允许包含重复的元素。List集合中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素
Map映射:由于内部存储结构的特点,映射中不能包含重复的键值,每个键最多只能映射一个值,否则会出现覆盖的情况,Map是一种把键对象和值对象进行映射的集合,即Map容器中既要存放数据本身,也要存放关键字
7、简述数组与链表这两种存储结构的异同点
数组与链表都是线性结构,只不过数组的存储空间是连续的,而链表的存储空间不是连续的
8、简述Arraylist容器与Linkedlist容器的区别
Arraylist容器与LinkedList容器都实现了List接口中的方法,但两者内部结构不同:
Arraylist是用数组组成的一个线性结构,内核为数组
LinkedList是用链表组成的一个线性结构,内核为双向链表
Arraylist查找速度快,插入删除速度慢【因为此时需要改下标,移动元素】
LinkedList查找速度慢,插入删除速度快【因为此时不需要移动元素,仅仅需要改变两个指针的指向】
9、简述数据结构中的哈希表
哈希码为内存地址的十六进制表示形式
哈希表的内部核心为散列函数,给定关键字【哈希码】,先通过散列函数f(key)确定出数据的存储位置,然后把数据存放到存储位置所关联的那个链表当中,如果已有相同的元素,则覆盖它
对于哈希表这种存储结构,是用桶结构来解决哈希冲突的,即虽然有的时候f(key)【存储位置】相同,但是存储位置所关联的那个链表却可以存放多个元素,避免了不同的数据被覆盖
10、如何理解Map容器中的键值【关键字】信息
所谓关键字就是区别与其他事物的显著特征,通过关键字可以加快我们的查询速度
2015年12月24日21:35:53