在java中可以存储任意类型的对象,并且长度可变的类称为集合类,集合类位于java.util包
集合类可以分为两大类,即单列集合collection和双列集合 map,单列集合存储一系列具有某种规则的元素,双列集合用于存储具有键和值映射关系的元素。
collection单列集合包括list和set两个子接口,list的特点是元素有序(元素的存入顺序和取出顺序相同)可重复,主要实现类有ArrayList和LinkedList,set接口的特点是元素无序不可重复,set的主要实现类有HashSet和TreeSet;
Map双列集合主要实现类有HashTable和HashMap
使用集合的步骤有:
1、创建集合对象
2、创建元素对象
3、将元素对象加入到集合对象中
4、遍历集合
一、List接口的方法
方法声明 | 功能描述 |
void add(int index,object element) | 将元素element插入在List集合的index处 |
object get(int index) | 返回集合索引index处的元素 |
Object remove(int index) | 删除index索引处的元素 |
Object set(int index,Object element) | 将索引index处的元素替换成element对象,并将替换后的元素返回 |
int indexOf(Object o) | 返回对象o在List集合中出现的位置索引 |
int lastindexOf(Object o) | 返回对象o在list集合中最后一次出现的位置索引 |
List subList(int fromindex,int toindex) | 返回从索引fromindex(包括)到toindex(不包括)处所有元素集合组成的子集合 |
二、ArrayList集合
ArrayList内部封装的是一个长度可变的数组对象,因此可以将ArrayList集合看做一个长度可变的数组,索引的取值范围是从0开始,最后一个索引是size-1。
ArrayList集合的优点是查找元素的效率快,缺点是对元素的增删操作效率低
三、LinkedList集合
LinkedList集合内部维护了一个双向循环链表,链表中的每一个元素都是用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来。
LinkedList中定义的方法
方法声明 | 功能描述 |
void add(int index,E element) | 在列表中指定的位置插入指定的元素 |
void addFirst(Object o) | 将指定元素插入到列表的开头 |
void addLast(Object o) | 将指定元素插入到列表的最后 |
Object getFirst() | 返回列表的第一个元素 |
Object getLast() | 返回列表的最后一个元素 |
Object removeFirst() | 删除并返回列表的第一个元素 |
Object removeLast() | 删除并返回列表的最后一个元素 |
四、Iterator接口:
Iterator主要用于遍历Collection中的元素
ArrayList list =new ArrayList();
Iterator it =list.iterator();
while(it.hasNext){
Object obj =it.next();
System.out.println(obj);
}
五、1、jdk5.0新特性-----foreach循环
for(容器中元素类型 临时变量:容器变量)
{
执行语句
}
**** 使用foreach循环只能访问集合中的元素,不能对集合中的元素进行修改
2、泛型的使用
泛型的优点是限定方法操作的类型
例子:ArrayList < 参数化类型> list=new ArrayList <参数化类型>();
六、HashSet集合
向HashSet集合中添加一个对象时,首先会调用该对象的hashcode()方法计算对象的哈希值,从而确定元素的存储位置,如果此时哈希值相同,在调用对象的equals()方法去报该位置没有重复元素。
例:
七、Map接口
Map接口的每个元素都包含一个键对象Key和一个值对象Value,put(Object key,Object value)和get(Object key)方法分别用于向Map中存入元素和取出元素,containsKey(Object key)和containsValue(Object value)分别用于判断Map中是否包含某个指定的键或值,KeySet()和values()方法分别用于获取Map中所有的键和值。
1、HashMap集合
HashMap集合用于存储键值映射关系,但必须保证不出现重复的键 ,Map集合若存储相同的键后,后者的值会覆盖原先的值,即键相同,值覆盖。