集合体系概述:JAVA的集合框架是由很多接口、抽象类、具体类组成。都位于java.util包中。
Java中集合类中默认可以存储任意数据类型,Java中的集合提供泛型机制,在定义时最好为集合提供一个明确的类型。(存在转型问题)
长度可变的数组;
在内存中分配连续的内存空间;
遍历元素和查询元素效率较高。
方法:
boolean add(E e);
容器末尾添加元素,若容器已满,则对容器进行扩容处理,新容量是原来的1.5倍,数组复制,创建新数组。
void add(int index,E e);
容器指定位置添加元素
boolean addall(Collection extends E>c);
添加单列集合
void clear();
清空容器;
boolean contains(Object o);
判断是否包含指定元素;
E get(int index);
返回列表指定位置元素;
int indexOf(Object o);
返回o首次出现位置索引
boolean isEmpty();
返回容器是否为空
int lastIndexOf(Object o);
返回容器出现o最后一次索引
链表存储方式(内存位置随机分配);
插入、删除元素效率较高;
查询效率较低。(需遍历容器)
底层实现是数组,但线程安全
①for循环遍历(缺点:删除元素时下一个元素会自动跑到被删除元素位置)
②增强for循环遍历(缺点:不允许在集合里删除元素)
③迭代器遍历
④listIterator
获得迭代器对象
Iterator
使用迭代器遍历容器
- package ColleationDemo;
-
- import java.util.ArrayList;
- import java.util.Iterator;
-
- public class List {
- public static void main(String[] args) {
- ArrayList
arr=new ArrayList<>(); - arr.add("a");
- arr.add("b");
- arr.add("d");
- arr.add("r");
- arr.add("a");
- arr.add("l");
- Iterator
it=arr.iterator(); - while(it.hasNext())
- {
- String s= it.next();
- System.out.println(s);
- }
- }
- }
注意:删除时使用迭代器中的remove(iterator.remove());
方法:
hasnext()
next()
previous()
hasPrevious()
hasPrevious(int index)