集合与数组
数组:可以存基本数据类型,也可存引用数据类型。数组长度固定
集合:可以存引用数据类型(基本数据类型要转换为包装类)。集合长度可变。
基本数据类型对应的包装类(编译器已关联好,会自动装箱):

集合体系
所有集合类和集合接口都在java.util包下。 在内存中申请一块空间用来存储数据,在Java中集合就是替换掉定长的数组的一种引用数据类型。
Collection系列为单列集合:

List系列集合:添加的元素是有序,可重复,有索引
Set系列集合:添加的元素是无序,不重复,无索引
Collection集合

contains方法:
在底层依赖equals方法判断对象是否一致,如果存的是自定义对象,没有重写equals方法,就默认使用Object类中的equals方法(依赖地址值判断)
Collection的遍历方式
迭代器遍历
概述

E为当前集合中存储数据的类型
iterator方法:返回一个在一组E类型的元素上进行迭代的迭代器,相当于创建一个指针指向0索引。
在Java中,Iterator通常是一个接口或类的名称,它定义了迭代器的行为和方法,所有实现了Collection接口的集合类都实现了这个接口。iterator方法通常用于从集合(如
List、set 等)中获取一个Iterator 对象,该对象可以用来遍历集合中的元素。
hasNext、next:这些方法在Iterator类中
hasNext:此方法判断当前指向位置是否有元素
next:此方法获取元素+移动指针

细节

3、第二次可能越界
4、否则会报错(出异常根本原因是:集合中元素删除了,但是没有更新迭代器(迭代器不知道集合变化了),使用迭代器方法删除时,会自动更新迭代器,并且更新集合(删除集合中的元素))
增强for遍历(用快捷键:集合名.for)
概述


细节

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Connection_02 {
public static void main(String[] args) {
//多态
Collection<String> con = new ArrayList<>();
//添加元素
con.add("abc");
con.add("def");
con.add("100");
con.add("444");
//Collection集合的遍历方式
//因为没有索引的概念,所以Collection集合不能使用fori进行遍历
//增强版for循环,其实底层使用的也是迭代器,在字节码文件中查看
for (String str : con) {
System.out.print(str + "\t");
}
System.out.println();//换行
//迭代器,集合专属的遍历工具
Iterator<String> it = con.iterator();//创建迭代器对象
while (it.hasNext()){//判断下一个位置是否有元素
System.out.print(it.next() + "\t");//获取到下一个位置的元素
}
}
}
Lambda表达式遍历

总结

List集合(有索引)

add:添加后原来索引上的元素会依次往后移
List集合遍历方式
迭代器遍历,增强for遍历,Lambda遍历:同Collection类
普通for遍历
列表迭代器遍历(在遍历的过程中可添加元素)
LisrIterator接口——详见API文档
总结

LinkedList集合


2194

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



