集合的概念(集合相当于一个动态的数组,数组的长度是可变的)
集合类存放的都是对象的引用,而非对象本身出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。
集合类型主要有3种:set(集),list(列表),和map(映射)。
集合接口分为:Collection 和 Map ,list,set
警告:集合里面只能存放引用数据类型,不能存放基本数据类型。
可以清晰的看到不管是List,Set还是 Map都有一个共同的父类就是Collection,这副图片当中虚线表示的是实现接口而实线表示的是实现接口的类,箭头所指的就是实现那个接口或者类的上一层。
接下来我们就说说List,Set,Map这三种集合它们的不同之处
List集合:元素是有序的,元素是可重复的,有索引可以很方便的拿出里面你想要的数据。
ArrayList:是对数组进行封装,它是一个顺序结构,其特点就是查询快,增删慢,线程不安全,效率高。
LinkedList:底层数据结构是链表,其特点就是查询慢,增删快,线程不安全,效率快,对头尾数据敏感。
Set集合:元素是无序的,通过链表进行存储,元素是不可重复的。
HashSet:特点就是线程不安全,效率高,允许存储null元素,元素无序且唯一。
TreeSet:基于TreeMap实现的,底层数据结构是红黑树。
Map集合:元素是不可重复的,通过键值对(成对出现)进行存储。
HashMap:是可以序列化的,线程不安全,底层是基于数组、链表和红黑树实现的。特点就是查询快,通过计算散件码存储位置。
hashMap集合的概述
1、HashMap是可以序列化的。是线程不安全的。
2、HashMap的底层主要是基于数组和链表实现的,它之所以有相当快的查询速度主要是因为它是通过计算散列码来决定存储位置的。
3、HashMap中主要是通过key的hashCode来计算hash值
增强for循环概述
简化数组和Colllection 集合的遍历
格式:
for{(元素数据类型 变量:数组或Collection集合){ } //使用增强for循环的时候要注意判空
}
TreeeMap概述
TreeMap是基于红黑树实现的。
集合中的映射关系是具有一定顺序的,该映射根据其键的自然顺序进行排序或者根据创建映射时提供的Comparator进行排序
TreeMap中不允许键对象是null。
set集合概述
set集合中的方法和collection中的方法是一样的。
无序性(元素存取的顺序不一致),
元素不重复
泛型概述
泛型就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,然后在使用/调用时传入具体的类型