Java集合
Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中
Java集合框架图如下所示:
Java的集合类主要由Map接口和Collection接口派生而来
Collection接口有两个子接口:List接口和Set接口
Java集合框架由三大接口构成:Map接口、List接口和Set接口
Collection接口存储一组不唯一、无序的对象
List接口
List接口:存储一组不唯一、有序(插入顺序)的对象
List接口的实现类有:ArrayList和LinkedList
ArrayList类
ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机 访问元素的效率比较高
ArrayList也称为动态数组
ArrayList与数组的区别:
1、ArrayList集合中可以添加任何类型的数据,并且添加的数据都将转换成Object类型
2、数组中只能添加同一数据类型的数据
ArrayList常用方法:
注:
1、调用ArrayList类的add(Object obj)方法时,添加到集合当中的数据将被转换为Object类型。
2、使用ArrayList类之前,需要导入相应的接口和类,代码如下:
import java.util.ArrayList;
import java.util.List;
LinkedList类
LinkedList类是List接口的链接列表实现类,允许元素值是任何数据,包括null。
LinkedList常用方法:
注:
list.remove();//等同于removeFirst()
list.element();//等同于getFirst()
list.offer(1);//等同于add(1)
list.peek();//等同于getFirst(),如果当前为空,返回空
list.poll();//弹出首元素,相对于removeFirst()
list.pop();//相对于removeFirst()
list.push("abc");//等同于addFirst("abc")
Collection接口常用通用方法还有:clear()清空数据、isEmpty()判断集合是否为空、iterator()迭代器、toArray()
ArrayList和LinkedList有何异同?
相同点:
都是List接口的一个具体实现类
不同点:
1、ArrayList类底层是可变数组,遍历元素更快,改变值也更快
2、LinkedList类底层是双向链表,插入、删除更快
Set接口
Set接口:存储一组唯一、无序的对象,Set中存放对象的引用,Set接口不存在get()方法
HashSet是Set接口常用的实现类
HashSet集合的特点:
1、集合内的元素是无序排列的
2、HashSet类是非线程安全的
3、允许集合元素值为null
HashSet类的常用方法:
注:使用HashSet类之前,需要导入相应的接口和类,代码如下:
import java.util.Set;
import java.util.HashSet;
Iterator接口
Iterator接口:对集合进行迭代的迭代器
Iterator接口主要有两个方法:
hasNext():判断是否存在下一个可访问的元素,如果仍有元素可以迭代,则返回true。
next():返回要访问的下一个元素。
如何遍历Set集合呢?
方法一:通过迭代器Iterator实现遍历
1、获取Iterator :Collection 接口的iterator()方法
2、Iterator的方法
boolean hasNext(): 判断是否存在另一个可访问的元素
Object next(): 返回要访问的下一个元素
方法二:增强型for循环