1.集合的概念
- 我们在存储各种数据的时候,可以使用八大基本数据类型,又或者是数组和链表,但是因为各种原因(数组存储的时候不能自动扩容,数组只能存储单一数据类型)的干扰,让程序员很是苦恼,于是就衍生出了现在的集合
- 集合不是指某一个数据类型,集合是由各种接口,抽象类和具体类实现的,都位于java.util包中.
2.集合的组成
- 集合分为单列(Collection)和双列(Map),首先我们来看一下Collection接口:
- Collection中有着List接口和Set接口 (二者的区别是list接口中的数据对象可以重复,但是Set接口中的数据对象不可以重复).
2.1List接口
- 其中list接口中有着三个具体类:ArrayList,LinkList,Vector,其中ArrayList和Vector都是采用数组的方法来进行存储的,但是Vector添加了同步锁,为单线程,相较于ArrayList来说更加安全.而LinkList是以链表为基础来进行存储的.
- 他们各自具有各自的优缺点,对于ArrayList和Vector来说,由于数组的特性,它查找和遍历的效率是远大于LinkList的,但是相对他们的插入和删除操作效率要小于LinkList.
- 在ArrayList中常用方法有:
- add(E element) 向集合的尾部添加元素
- add(int index,E element) 向集合的该索引处添加元素
- get(int index) 获得集合中该索引处的元素
- indexOf(Object o) 获得该元素第一次出现时的索引
- lastIndexOf(Object o) 获得该元素最后一次出现时的索引
- remove(int index) 删除该索引处的元素并且返回被删除的元素
- set(int index,E element) 修改集合中该索引处的元素
- 在Linklist中常用方法有:
- add(int index,Object element) 向链表的索引处添加元素
- addFirst(Object element) 向链表的表头处添加元素
- addLast(Object element) 向链表的表尾处添加元素
- get(int index) 获得链表该索引处的元素
- getFirst() 得到首元元素
- getLast() 得到尾元素
- remove(int index) 删除索引处的元素
- removeFirst() 删除头部元素
- removeLast() 删除尾部元素
- 在List接口中的遍历方法
- for循环遍历
- 增强for循环遍历
- 迭代器遍历
ArrayList<String> array=new ArrayList<>();
//迭代器循环
Iterator<String> it=array.iterator();
while(it.hasNext){
String s=it.next();
System.out.println(array);
}
3.Set接口
- Set接口中所有元素都不重复,但是是无序的,Set中的元素没有索引.
- Set接口中有着HashSet和TreeSet之间的区别是HashSet不能进行排序,但是TreeSet可以进行排序,但是必须实现Comparable接口.
- HashSet的常见方法
- add(Object element); 向HashSet中添加元素
- contains(Object element); 判断HashSet中有没有这个元素
- clear(); 清空HashSet中的所有元素
- remove(Object element); 删除HashSet中的这个元素
- TreeSet的常见方法
- add(Object element); 向TreeSet中添加元素
- first(); 返回集合的第一个元素
- last(); 返回集合的最后一个元素
- Higher(Object element); 返回大于指定元素的最小元素
- lower(Object elemen); 返回小于指定元素的最大元素
2.2Map接口
-
Map接口的实现类分别是HashMap和TreeMap,二者储存的方法都是通过键值对来进行存储且key值不能够重复,二者的区别是HashMap排序顺序不固定,但是TreeMap通过某种排序使得集合有迹可循,HashTable则是可以实现单线程同步,但是不能存储null值.
-
HashMap和TreeMap中的常见方法
-
put(K key,V value); 向Map中添加键值对
-
remove(Object key); 通过键值来删除Map中的元素
-
Set<K> keySet(); 返回Map中的键
-
Set<Map.Entry<K,V>> entry(); 返回Map中键对应的元素
-