集合
集合就是基于某种数据结构数据容器。常见的数据结构:数组(Array)、集(Set)、队列 (Queue)、链表(Linkedlist)、树(Tree)、(Heap)、栈(Stack)和映射(Map)等结构。
集合的概述
集合虽然有很多,但是需要重点掌握的还是List、Set和Map三个接口,并熟练掌握这三个接口的具体实现类
List集合
List集合就相当与数组集合,集合中的元素是有序的,并且可以重复。List接口的实现类有:ArrayList 和 LinkedList。
ArrayList是基于动态数组数据结构的实现,LinkedList 是基于链表数据结构的实现。
ArrayList访问元素速度优于LinkedList,LinkedList占用的内存空间比较 大,但LinkedList在批量插入或删除数据时优于ArrayList。
总的来说就是空间换时间。
常用方法
方法主要有set,get,增加,删除,查询,修改
-
操作元素
get(int index):返回List集合中指定位置的元素。
set(int index, Object element):用指定元素替换List集合中指定位置的元素。
add(Object element):在List集合的尾部添加指定的元素。该方法是从Collection集合继承 过来的。
add(int index, Object element):在List集合的指定位置插入指定元素。
remove(int index):移除List集合中指定位置的元素。
remove(Object element):如果List集合中存在指定元素,则从List集合中移除第一次出现的 指定元素。该方法是从Collection集合继承过来的。
clear():从List集合中移除所有元素。该方法是从Collection集合继承过来的。
-
判断元素
isEmpty():判断List集合中是否有元素,没有返回true,有返回false。该方法是从 Collection集合继承过来的。
contains(Object element):判断List集合中是否包含指定元素,包含返回true,不包含返回 false。该方法是从Collection集合继承过来的
-
查询元素
indexOf(Object o):从前往后查找List集合元素,返回第一次出现指定元素的索引,如果 此列表不包含该元素,则返回-1。
lastIndexOf(Object o):从后往前查找List集合元素,返回第一次出现指定元素的索引,如 果此列表不包含该元素,则返回-1。
-
其他
iterator():返回迭代器(Iterator)对象,迭代器对象用于遍历集合.方法是从Collection 集合继承过来的。
size():返回List集合中的元素数,返回值是int类型。该方法是Collection集合继承过来 的。
subList(int fromIndex, int toIndex):返回List集合中指定fromIndex(包括 )和 toIndex(不包括)之间的元素集合,返回值为List集合。
遍历集合
集合最常用的操作之一是遍历,遍历就是将集合中的每一个元素取出来,进行操作或计算。List集合遍 历有三种方法就是for循环,foreach和迭代器。
三种方法为:
-
使用for循环遍历:List集合可以使用for循环进行遍历,for循环中有循环变量,通过循环变量可 以访问List集合中的元素。
-
使用for-each循环遍历:for-each循环是针对遍历各种类型集合而推出的,笔者推荐使用这种遍历 方法。
-
使用迭代器遍历:Java提供了多种迭代器,List集合可以使用Iterator和ListIterator迭代器。
Set集合
set集合元素是无序的且不能重复,set集合相当于链表。重要的是如果list集合中没有重复元素时,set集合和list集合可以相互转换。
常用方法
set就相当于链表,所有拥有
Set接口也继承自Collection接口,Set接口中大部分都是继承自Collection接口,这些方法如下。
- 操作元素
add(Object element):在Set集合的尾部添加指定的元素。该方法是从Collection集合继承过来的。
remove(Object element):如果Set集合中存在指定元素,则从Set集合中移除该元素。该方法是从Collection集合继承过来的。
clear():从Set集合中移除所有元素。该方法是从Collection集合继承过来的。
- 判断元素
isEmpty():判断Set集合中是否有元素,没有返回true,有返回false。该方法是从Collection集合继承过来的。
contains(Object element):判断Set集合中是否包含指定元素,包含返回true,不包含返回false。该方法是从Collection集合继承过来的。
- 其他
iterator():返回迭代器(Iterator)对象,迭代器对象用于遍历集合。该方法是从Collection集合继承过来的。
size():返回Set集合中的元素数,返回值是int类型。该方法是从Collection集合继承过来的。
遍历集合
Set集合中的元素由于没有序号,所以不能使用for循环进行遍历,但可以使用for-each循环和迭代器进 行遍历。事实上这两种遍历方法也是继承自Collection集合,也就是说所有的Collection集合类型都有这两种遍历方式。
20.4 Map集合
Map集合就是通过键值对来实现数据的管理,键值对就是键(key)和值(value)组合起来使用,其中键是使用的set集合,所以不能重复,值是list集合可以重复。map集合就相当于查字典一样,可以快速查找到自己想要的东西,但是相对的比较复杂。还是遵循空间和时间的规则。
常用方法
Map集合中包含两个集合(键和值),所以操作起来比较麻烦,Map接口提供很多方法用来管理和操作集合。主要的方法如下。
- 操作元素
get(Object key):返回指定键所对应的值;如果Map集合中不包含该键值对,则返回null。
put(Object key, Object value):指定键值对添加到集合中。remove(Object key):移除键值对。
clear():移除Map集合中所有键值对。
- 判断元素
isEmpty():判断Map集合中是否有键值对,没有返回true,有返回false。
containsKey(Object key):判断键集合中是否包含指定元素,包含返回true,不包含返回 false。
containsValue(Object value):判断值集合中是否包含指定元素,包含返回true,不包含返 回false。
- 查看集合
keySet():返回Map中的所有键集合,返回值是Set类型。
values():返回Map中的所有值集合,返回值是Collection类型。
size():返回Map集合中键值对数。
遍历集合
Map集合遍历与List和Set集合不同,Map有两个集合,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历。这些遍历过程都可以使用for-each循环和迭代器进行遍历。
小结
合类是Java数据结构的实现。Java的集合类是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再以一个类的形式提供。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,适合不同的场合,用以解决一些实际问题。