1. 集合的体系结构
集合与数组的区别:
- 数组的长度是不可变的,集合的长度是可变的
- 数组可以存基本数据类型和引用数据类型
- 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类
集合体系结构图:

2. Collection集合常用方法
Collection集合是单列集合的顶层接口,可以分为 list(可以存储重复元素)和 set(存储元素不可以重复)集合,list 和 set 也是接口类。
Collection集合的实现类:ArrayList(底层为数组)、LinkedList(底层为双链表)、HashSet(底层为哈希表)、TreeSet(底层为红黑树)
Collection集合常用方法:
| 方法名 | 说明 |
|---|---|
| boolean add(E e) | 添加元素 |
| boolean remove(Object o) | 从集合中移除指定的元素 |
| boolean removeIf(Object o) | 根据条件进行移除 |
| void clear() | 清空集合中的元素 |
| boolean contains(Object o) | 判断集合中是否存在指定的元素 |
| boolean isEmpty() | 判断集合是否为空 |
| int size() | 集合的长度,也就是集合中元素的个数 |
示例代码:
public static void main(String[] args) {
//多态方式创建list集合
List<String > list1 = new ArrayList<>();
Collection<String> list2 = new ArrayList<>();
//直接创建list对象
ArrayList<String> list = new ArrayList<>();
//添加元素
list.add("林黛玉");
list.add("薛宝钗");
list.add("王熙凤");
//集合的父类有重写toString()方法
System.out.println(list);//[林黛玉, 薛宝钗, 王熙凤]
//从集合中移除指定的元素
list.remove("王熙凤");
System.out.println(list);
list.add("李逵");
System.out.println(list);//[林黛玉, 薛宝钗, 李逵]
//根据条件进行移除
list.removeIf(
(String s) -> {
return s.length() == 2;
});
System.out.println(list);//[林黛玉, 薛宝钗]
}
3. Collection集合特殊遍历方法
3.1 迭代器遍历
迭代器 Iterato 是集合的专用遍历方式
Iterator<E> iterator():返回集合的迭代器对象,该迭代器对象默认指向当前集合的0索引
迭代器对象的常用方法:
- boolean hasNext( ):判断当前指向位置是否有元素可以被取出
- E next( ):获取当前位置的元素,并将迭代器对象指向下一个索引位置
使用迭代器遍历集合:
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("穷且益坚,不坠青云志");
list.add("老当益壮,宁移白首之心");
list.add("老骥伏枥,志在千里");
list.add("落霞与孤鹜齐飞,秋水共长天一色");
list.add("但愿人长久,千里共婵娟");
//获得list集合的迭代器对象it,指向list集合的索引0位置
Iterator<String> it = list.iterator();
//使用迭代器遍历集合
while (it.hasNext()){//当前位置是否有元素可以被取出
String str = it.next();//取出当前位置元素,将迭代器指向向后移一位
System.out.println(str);
}
}
void remove( ):从底层集合移除此迭代器返回的最后一个元素
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("林黛玉");
list.add("贾宝玉");
list.add("贾宝玉");
list.add("薛宝钗");
//获取迭代器对象,将集合交给迭代器对象处理,此时不能手动操作集合
Iterator<String> it = list.iterator();
while (it.hasNext()){
//next做了两件事1.获取当前数据交给迭代器持有 2. 迭代器指向下一个元素
String s = it.next();
if(s.equals("贾宝玉")){
//删除迭代器持有数据的数据
it.remove();
}
}
System.out.println(list);//[林黛玉, 薛宝钗]
}
3.2 增强for循环:
- 其内部原理是一个Iterator迭代器
- 实现Iterable接口的类才可以使用迭代器和增强for(所有单列集合Collection的实现类和数组)
示例代码:
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("呦呦鹿鸣,食野之苹");
list.add("关关雎鸠,在河之洲");
list.add("求之不得,寤寐思服");
//数据类型一定是集合或者数组中元素的类型
//str仅仅是一个变量名而已,在循环的过程中,依次表示集合或者数组中的每一个元素
//list就是要遍历的集合或者数组
for (String str : list) {
System.out.println(str);
}
}
4. List集合的实现类
List接口的实现类:
- ArrayList集合:底层是数组结构实现,查询快、增删慢
- LinkedList集合:底层是双链表结构实现,查询慢、增删快
LinkedList集合特有方法:
| 方法名 | 说明 |
|---|---|
| public void addFirst(E e) | 在该列表开头插入指定的元素 |
| public void addLast(E e) | 将指定的元素追加到此列表的末尾 |
| public E getFirst() | 返回此列表中的第一个元素 |
| public E getLast() | 返回此列表中的最后一个元素 |
| public E removeFirst() | 从此列表中删除并返回第一个元素 |
| public E removeLast() | 从此列表中删除并返回最后一个元素 |
如有错误欢迎留言评论,及时更正。5月29日 羽露风
本文详细介绍了Java集合框架中Collection接口的基础概念,包括数组与集合的区别,以及常用的List(ArrayList, LinkedList)和Set(HashSet, TreeSet)集合的特性、方法和遍历技巧。重点讲解了添加、删除元素和特殊遍历方式,如迭代器和增强for循环的应用。
1537

被折叠的 条评论
为什么被折叠?



