Java集合常见方法
1.集合
在说java中集合方法之前,先来了解一下什么是集合,在学习使用集合之前,我们都学过数组的使用,他们的结构很相似,但是数组有很大的缺点,比如:
1.数组能使用的方法很少,如果非要使用,只能我们自己完成;
2.数据类型单一化,不支持多种情况,每次定义的数组只能是一种数据类型
3.数组容量不可修改,数组扩容能满足,但是很繁琐
在这种情况下,java中有了集合的存在:
1.方法多种多样,基本功能完善;
2.数据类型支持多样化,又不失数据类型一致要求
3.容量可以变
2.集合架构
我们平时在java中使用到的List、Set等集合的总接口都来自Collection,java中所有和集合有关的内容都是Collection接口的子接口或实现类
interface Collection
interface List 有序可重复
class ArrayList<E> 可变长数组结构
class LinkedList<E> 双向链表结构
class Vector<E> 线程安全的ArrayList
interface Set 无序不可重复
HashSet<E> 哈希表方法
TreeSet<E> 平衡二叉树方式
3.集合常用方法
今天我们主要说一下List接口以及他的子类的常见方法:
ArrayList
增:
add(E e); 添加元素到集合的末尾,尾插法
addAll(Collection <? extends E> c);添加另一个集合到当前集合末尾,要求添加集合中保存的元素和当前集合中保存元素一致或是当前集合的子类
add(int index, E e);在指定集合的下标位置,添加指定元素
addAll(int index, Collection<? extends E> c);在指定下标位置添加指定集合
删:
void clear();清空整个集合
remove(Object obj);删除集合中的指定元素
removeAll(Collection <?> c);删除两个集合的交集
retainAll(Collection <?> c);保留两个集合的交集
remove(int index);删除指定下标的元素,返回被删除的元素
改:
E set(int index, E e);使用指定元素提换指定下标index的元素,返回被替换的元素
查:
int size();有效元素个数
boolean isEmpty(); 判断当前集合是否为空
boolean contains(Object obj);查看指定元素
boolean containsAll(Collection<?> c);查看指定集合
int indexOf(Object obj);找出指定元素在集合中第一次出现位置
int lastIndexOf(Object obj);找出指定元素在集合中最后一次出现位置
E get(int index);获取指定下标的元素
List<E> subList(int fromIndex, int endIndex);获取当前集合的子集合,左闭右开
ArrayList集合查找很快,但是增删很慢
因为有下标的存在查询速度非常快;
但是在增删的过程中,涉及到数组扩容,元素的大量移动,导致效率很低,所以在使用的时候应该根据实际情况来选择
LinkedList
增:
addFirst(E e);在链表的最前面插入一个元素
addLast(E e);在链表最后插入一个元素
删:
removeFirst();删除链表第一个元素
removeLast();删除链表最后一个元素
查:
E getFirst();获取链表第一个元素
E getLast();获取链表最后一个元素
LinkedList和ArrayList有很多相同方法,因为他们都是List的实现类,像add()、get()、remove()、set(),上面列举的都是他们不相同的方法,LinkedList链表相对ArrayList正好是相反的,查询慢,增删快,正好给我们提供了不同的选择。