集合概述
在Java中,集合(Collection)是一个用于存储对象的容器,可以存储多个对象,并可以进行查询、排序和操作等操作。Java提供了多种不同类型的集合类,每个集合类都实现了特定的数据结构,以满足不同的需求。
Java集合框架主要分为两个部分:一部分是集合接口和类,另一部分是实现这些接口的具体类。
常见的集合接口有:
- Collection:表示一组元素,包括List、Set和Queue等子接口;
- List:有序的元素集合,其中可以包含重复的元素;
- Set:不允许重复元素的集合;
- Queue:一种支持在队列头部插入和删除的集合;
- Deque:一种支持双向队列操作的集合。
常见的集合类有:
主要分为collection(单列集合)和map(双列集合)键值对
collection是所有单列集合的父接口它的成员方法,子类都可以使用
collection集合接口特有方法:
list和set是collection的子类
list集合接口特有方法:
collection的遍历方式:迭代器遍历、增强for遍历、lambda表达式遍历
迭代器遍历:
注意细节:
1、报错NoSuchElementException(表示没有这个元素异常)
2、迭代器遍历完毕,指针不会复位
3、每一次循环中只能用一次next方法
4、迭代器遍历时,不能使用集合的方法增加或者删除
增强for遍历:
增强for的底层就是迭代器,为了简化迭代器的代码书写。
所有的单列集合和数组才能使用增强for进行遍历
lambda遍历:
lambda更简单,更直接的集合遍历
list接口: ArrayList、LinkedList (有序、可重复、有索引)
set接口: HashSet、TreeSet (无序、不可重复,无索引)
map: HashMap、TreeMap
- ArrayList:基于数组实现的列表,支持动态添加和删除元素,在获取指定元素的性能上比较高效;
- LinkedList:基于链表实现的列表,支持动态添加和删除元素,在添加和删除元素的性能上比较高效;
- HashSet:基于哈希表实现的集合,不允许重复元素,存储元素的顺序是不确定的;
- TreeSet:基于红黑树实现的集合,不允许重复元素,存储元素的顺序是有序的;
- HashMap:基于哈希表实现的键值对映射,不允许重复的键;
- TreeMap:基于红黑树实现的键值对映射,不允许重复的键,存储元素的顺序是有序的。
Java集合框架提供了很多方法用于操作和查询集合中的元素,例如添加、删除、查找、遍历等。使用集合可以大大简化代码,提高代码的可读性和可维护性。
List系列集合:
ArrayList:
在Java中,ArrayList是一种实现了List接口的动态数组类,它可以存储任意类型的对象,并且可以根据需要自动扩容。
ArrayList的五个成员方法:
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<String>();//创建一个集合
list.add("aa");//向集合里面添加元素
list.add("bb");
System.out.println(list);
boolean b=list.remove("aa");//通过元素值删除元素
String str=list.remove(0);//放回删除的元素
list.add("aa");
list.set(0,"ccc");//通过索引修改值
System.out.println(list);
System.out.println(list.get(0));//通过索引获取元素的值
System.out.println(list.size());//获取集合的大小
}
}
LinkedList:
LinkedList是一种实现了List接口和Deque接口的双向链表类,它可以存储任意类型的对象,并且支持快速添加、删除和访问元素。
总之,LinkedList是一种非常灵活和方便的集合类,具有高效的插入和删除元素、用作队列或栈等特点。它适用于需要频繁插入和删除元素,但不需要频繁访问元素的场景。然而,如果需要频繁访问元素或对集合进行排序,建议使用ArrayList,因为它的随机访问速度更快。
LinkedList六个成员方法:
Set系列集合:
注意:Set集合是Collection集合的子接口,所以Set集合和Collection使用的方法基本一致
特点:
- 无序:存取顺序不一致
- 不重复:可以去除重复
- 无索引:没有带索引的方法,所以不能使用普通for遍历,也不可以通过索引来获取元素
Set集合的实现类 :
- HashSet:无序、不重复、无索引
- LinkedHashSet:有序、不重复、无索引
- TreeSet:可排序、不重复、无索引
Set集合可以通过迭代器、增强for、 lambda进行遍历