学习记录之集合
什么是集合
集合与数组一样,可以保存一组元素,并且提供了操作元素的相关方法,使用更方便.
java集合框架中相关接口
java.util.Collection接口:
java.util.Collection是所有集合的顶级接口.Collection下面有多种实现类,因此我们有更多的数据结构可供选择.
Collection下面有两个常见的子接口:
java.util.List:线性表.是可重复集合,并且有序.
java.util.Set:不可重复的集合,大部分实现类是无序的.
常用方法:
这里可重复指的是集合中的元素是否可以重复,而判定重复元素的标准是依靠元素自身equals比较的结果.为true就认为是重复元素;
集合与元素equals方法相关的方法
集合存放的是元素的引用
集合只能存放引用类型元素,并且存放的是元素的引用
集合间的操作:
集合提供了如取并集,删交集,判断包含子集等操作;
集合的遍历:
Collection提供了统一的遍历集合方式:迭代器模式
Iterator iterator()
该方法会获取一个用于遍历当前集合元素的迭代器.
java.util.Iterator接口:
迭代器接口,定义了迭代器遍历集合的相关操作.
不同的集合都实现了一个用于遍历自身元素的迭代器实现类,我们无需记住它们的名字,用多态的角度把他们看做为Iterator即可.
迭代器遍历集合遵循的步骤为:问,取,删.其中删除元素不是必要操作:
迭代器遍历过程中不得通过集合的方法增删元素
增强型for循环
JDK5之后推出了一个特性:增强型for循环
也称为新循环,使得我们可以使用相同的语法遍历集合或数组.
- 语法:
泛型:
JDK5之后推出的另一个特性:泛型
泛型也称为参数化类型,允许我们在使用一个类时指定它当中属性,方法参数或返回值的类型.
- 泛型在集合中被广泛使用,用来指定集合中的元素类型.
- 有泛型支持的类在使用时若不指定泛型的具体类型则默认为原型Object
List集:
java.util.List接口,继承自Collection.
List集合是可重复集,并且有序,提供了一套可以通过下标操作元素的方法
常用实现类:
- java.util.ArrayList:内部使用数组实现,查询性能更好.
- java.util.LinkedList:内部使用链表实现,首尾增删元素性能更好.
List集合常见方法:
get()与set():
重载的add()和remove()
subList()方法
集合与数组的转换:
集合转换为数组
Collection提供了一个方法:**toArray**,可以将当前集合转换为一个数组
数组转换为List集合:
数组的工具类Arrays提供了一个静态方法**asList()**,可以将一个数组转换为一个List集合
集合的排序
java.util.Collections类
Collections是集合的工具类,里面定义了很多静态方法用于操作集合.
Collections.sort(List list)方法
可以对List集合进行自然排序(从小到大)
集合的排序
java.util.Collections类
Collections是集合的工具类,里面定义了很多静态方法用于操作集合.
Collections.sort(List list)方法
可以对List集合进行自然排序(从小到大)
排序自定义类型元素
实际开发中,我们并不会让我们自己定义的类(如果该类作为集合元素使用)去实现Comparable接口,因为这对我们的程序有侵入性.
侵入性:当我们调用某个API功能时,其要求我们为其修改其他额外的代码,这个现象就是侵入性.侵入性越强的API越不利于程序的后期可维护性.应当尽量避免.
重载的Collections.sort(List list,Comparator c)方法
Map 查找表
Map体现的结构是一个多行两列的表格,其中左列称为key,右列称为value.
Map总是成对保存数据,并且总是根据key获取对应的value.因此我们可以将查询的条件作为key查询对应的结果作为value保存到Map中.
Map有一个要求:key不允许重复(equals比较的结果)
java.util.Map接口,是所有Map的顶级接口,规定了Map的相关功能.
常用实现类:
java.util.HashMap:称为散列表,使用散列算法实现的Map,当今查询速度最快的数据结构.
java.util.TreeMap:使用二叉树实现的Map
Map的遍历
Map支持三种遍历方式:
遍历所有的key
遍历所有的键值对
遍历所有的value(相对不常用)
总结
java.util.Map 查找表
特点:体现的结构是一个多行两列的表格,其中左列称为key,右列称为value。
Map中的key不允许重复。判定重复的标准是根据key的equals方法判定的。
常用的实现类:java.util.HashMap 散列表
常用方法: