一、认识集合
java集合框架提供了一些类,和接口,他们都位于java.util(工具)包中,也就是通常所说的java集合。
java集合类主要由Map接口和Collection接口派生而来的。
Collection接口是最基本的集合接口,可以存储一组不唯一,无序的对象。
注意:java集合里面存的是对象!!!
其中,Collection接口有两个常用的子接口:List接口和Set接口。
所以,我们经常会说java集合框架由3大接口组成:Map,List,Set接口。
二、List接口
1.List接口可以存储一组不唯一,有序的对象。表示数据可以重复,而且是有顺序的!
2.List通常常用的实现类是ArrayList和LinkedList类。
3.使用ArrayList类动态储存数据
- ArrayList是java中针对数组的缺陷,进行对数组的封装,实现了可以长度可变的数组!所以又叫做动态数组。
ArrayList类的一些常用方法:
方法 | 说明 |
add(Object o) | 往集合里面添加元素o |
add(int index,Object o) | 在指定位置添加元素0 |
int size() | 返回列表中元素的个数 |
get(int index) | 返回指定索引位置处的元素,注意取出来的是Obiect类型,使用前要进行强制类型转换 |
ser(int index,Object obj) | 将index索引位置处的元素替换成obj元素 |
Boolean contians(Object obj) | 判断列表中是否存在元素o,返回值是booelan,true或者false |
int indexOf(Object obj) | 返回 元素在集合中出现的索引位置 |
boolean remove(Object o) | 从列表中删除元素o |
Object remove(int index) | 从列表中删除指定位置的元素,起始位置从0开始 |
注意:使用ArrayList类前,需要导包:
import java.util.ArrayList;
import java.util.List;
ArrayList集合常用于:遍历元素(查询)和随机访问元素,效率比较高。
4.使用LinkedList类动态存储数据
LinkedList类是List接口的链表式是实现类、并且允许元素之是任何数据,可以为null.
LinkedList集合类常用于:插入,删除,修改效率比较高,但是查找效率比较低。
LinkedList集合类的常用方法:
方法 | 说明 |
void addFirst(Object obj) | 将指定元素插入到集合的第一位 |
void addLast(Object obj) | 将指定元素插入到集合的最后一位 |
Object getFirst() | 获得当前集合的第一个集合 |
Object gerLast() | 获得当前集合中的最后一个元素 |
Object removeFirst() | 删除并返回当前集合中的第一个元素 |
Object removeLast() | 删除并返回当前集合的最后一个元素 |
注意:List有序集合中可以有3种遍历方式:
- 普通for循环
- 增强for循环
- iterator迭代器
三、Set接口
1.Set接口是Collection接口中的另外一个常用的子接口,可以存储唯一,无序的对象!
2.常用的实现类有HashSet。HashSet集合类他的
3.使用HashSet类动态存储数据,查找效率高
HashSet集合特点:
- 集合类的元素是无序排列,不存在get()方法
- HashSet类是非线程安全的。
- 允许集合元素值为null.
HashSet类的常用方法:
方法 | 说明 |
boolean add(Object o) | 添加指定元素,如果Set中没有就添加,有的话就会覆盖。 |
void clear() | 从Set中移除所有的元素 |
int size() | 返回Set中的元素的数量 |
boolean isEmpty() | 如果Set中不包含任何元素,则返回true |
boolean contains(Object o) | 如果Set包含指定元素o,则返回true |
boolean remove(Object o) | 如果指定元素o存在于Set中,则将其移除 |
注意:Set无序集合中有2中遍历循环:
- 增强for循环
- iterator迭代器
因为HashSet类不存在get()方法,所以Set接口无法使用普通for循环遍历。
四、Iterator接口
1.iterator接口表示对集合进行迭代的迭代器,它是为集合而生,专门实现集合的遍历。
2.Iterator的用法:
- hastNest():判断是否存在元素。如果存在,就去迭代,返回true.
- next():返回要访问的下一个元素。获得元素。
3.凡是由Collection接口派生而来的接口或者类,都实现了iterato()方法,iterator()方法返回一个Iterator对象。
4.实现代码如下:
ArrayList list=new ArrayList(); //创建集合类
list.add("张珊");
Iterator<Journ> itor = jn.iterator(); //获得迭代器
// 通过迭代器迭代出集合元素
while (itor.hasNext()) { // 判断是否有下一个元素
Journ title=(Journ)itor.next(); //返回下一个元素,需要强制为Journ类型
System.out.println(title);
}