一、java什么是集合。
其实集合跟数组差不多,只不过长度是可以变化的。
List :有序的,可以通过下标访问读取
Map:无序的,是通过键值对存取
Set:就是一个无序集合
它们的基本都实现Collection
1.常用集合:
List-->ArrayList
List-->LinkedList
二、集合跟数组有什么区别。
ArrayList和LinkedList的大致区别如下:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
https://www.cnblogs.com/soundcode/p/6294174.html
三、常用集合Map
List集合跟Map集合差别在哪?
List:它是根据下标来进行添加和读取,是有顺序的。
Map:是根据键值对来添加和读取,Key value
HashMap和TreeMap的区别
HashMap:数组方式存储key/value,线程非安全,允许null作为key和value,key不可以重复,value允许重复,不保证元素迭代顺序是按照插入时的顺序,key的hash值是先计算key的hashcode值,然后再进行计算,每次容量扩容会重新计算所以key的hash值,会消耗资源,要求key必须重写equals和hashcode方法 。
默认初始容量16,加载因子0.75,扩容为旧容量乘2,查找元素快,如果key一样则比较value,如果value不一样,则按照链表结构存储value,就是一个key后面有多个value;
TreeMap:基于红黑二叉树的NavigableMap的实现,线程非安全,不允许null,key不可以重复,value允许重复,存入TreeMap的元素应当实现Comparable接口或者实现Comparator接口,会按照排序后的顺序迭代元素,两个相比较的key不得抛出classCastException。主要用于存入元素的时候对元素进行自动排序,迭代输出的时候就按排序顺序输出 。
作业思考
1、
动态数组的数据结构
链表的数据结构
2、Map有几种表现形式,它们之间有什么差别?
作业1:
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10;
分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判断生成的字符串是否包含重复,在判断长度是不是10,等等.
*2.其实这题我们可以培养一个习惯,大问题分解小问题解决.
(1).10个字符串,我们先产生一个10个字符不重复的字符串,
(2).怎么去重复呢?集合中的HashSet就可以,这题不适合用包含方法做,代码复杂
(3).字符组成是由(a-zA-Z0-9) 难道我们在随机他们的码表一一判断吗?-------->可以把们放到一个容器中ArrayList 在集合的随机索引
四、HashMap,LinkedHashMap,TreeMap的区别。
Map主要用于储存键值对,根据键得到值,因此不允许键重复(若重复则覆盖),但是允许值重复。