1.1为什么使用集合框架
缘由:由于数组在创建的时候会默认定义数组的长度,而数组的长度是不变的,所以导致数组的赋值及创建会有内存浪费的现象,于是集合作为可以更改长度的“数组”,可以解决内存浪费的现象。
1.2 Java集合框架架构图
怎么认识集合:(面试题)
1.集合有两个父接口一个是Collection、Map
2.collection有两个子接口:List、Set
3.List有两个实现类:ArrayList、LinkedList
4.Set有两个常见的实现类:HashSet、TreeSet
5.Map有两个常见的实现类:HashMap、HashTable
1.3 Java集合框架特点(面试题)
(1)List的特点:有序并且可重复
(2)Set的特点:无序并且不能重复
(3)Collection的特点:无序并且可以重复
(4)Map的特点:存放一对值【键值对】(key 键---value 值 )
2..List接口
ArrayList和LinkedList的区别(面试题)
1. List接口的实现类种类
(1)ArrayList的特点:查询效率高,而增删改的效率低(数组方式存储)
(2)LinkedList的特点:查询效率低,增删改的效率高(链表方式存储)
2.1ArrayList集合类
(1)实例化ArrayList对象
(2)添加数据:add()
第一种:直接添加值:
第二种:通过角标添加值
(3)删除数据:
第一种:通过角标删除数据
第二种:通过值删除数据
(4)查询数据
第一种:传统for循环
第二种:增强for循环
(5)拓展:
arrayList.size()是获取数组长度的方法
arrayList.get()是获取数组的每个元素值
3.ArrayList集合类(泛型)
泛型:<>用来指定集合存放数据的类型
3.1存放String类型
3.2存放Integer类型(如果存放基本数据类型是包装类型,int的包装类型是Integer)
正确的:
错误的:
3.3存放基本对象的泛型
4.LinkedList集合类
4.1 LinkedList存放Object类型数据
4.2 LinkedList存放对象类型数据
拓展:如果使用到LinkedLiset中的独有的方法addFirst(),addLast(),removeFirst(),removeLast()
则不可以使用List<user> users = new LinkedList<>();,只能用LinkedList<User> users = new LinkedList<>();
3.Set接口
要点1: Iterator()获取迭代器对象(迭代器的作用是遍历Set集合)
要点2: hasNext()判断是否有下一个对象
要点3:next()获取下一个值
要点4:sets集合是没有顺序的
要点5:sets 集合不可以存放重复的数据
2.Set -泛型-String
3.Set--对象类型
4.Map集合类
4.1 实例化HashMap
4.2给HashMap赋值
遍历HashMap
第一种
第二种:
Map泛型--string
Map泛型--对象