当前位置: 首页 > news >正文

Java基础 Day18

一、集合的分类

1、单列集合

一次添加一个元素,实现了 Collection 接口

(1)List 接口的实现类

存取有序、有索引、可以存储重复的

(2)Set 接口的实现类

存取无序、没有索引、不可以存储重复的

2、双列集合

一次添加一对元素,实现了 Map 接口

二、Collection 接口的使用

public boolean add (E e)

把给定的对象添加到当前集合中

public void clear ()

清除集合中的所有元素

public boolean remove (E e)

把给定的对象在集合中删除

public boolean contains (Object obj)

判断当前集合中是否存在给定的对象

public boolean isEmpty ()

判断当前集合是否为空

public int size ()

返回当前集合的元素个数 / 集合长度

Tips:remove 和 contains 方法依赖 E 类的 equals 方法

如果集合里装的是自定义类的对象,注意是否重写了 equals 方法

三、集合的通用遍历方式

1、迭代器遍历

Collection<Student> stu = new ArrayList<Student>();
stu.add(new Student("aaa",21));
stu.add(new Student("bbb",22));
stu.add(new Student("ccc",23));// 获取迭代器对象
Iterator<Student> it = stu.iterator();
// 进行遍历
while (it.hasNext()) {System.out.println(it.next());
}

Tips:next 方法会将元素取出,并将指针后移一位

2、增强for循环(JDK5)

for (Student s : stu) {System.out.println(s);
}

增强for循环的底层也是迭代器

3、forEach 方法

// 匿名内部类
stu.forEach(new Consumer<Student>() {@Overridepublic void accept(Student student) {System.out.println(student);}
});
// Lambda 表达式
stu.forEach(student -> System.out.println(student));

forEach方法的底层也是迭代器

四、List 接口

1、特点

存取有序、有索引、可以存储重复的

2、和索引相关的方法

void add(int index,E element)

在此集合中的指定位置插入指定的元素

remove(int index)

删除指定索引处的元素,返回被删除的元素

set(int index,E element)

修改指定索引处的元素,返回被修改的元素

get(int index)

返回指定索引处的元素

如果存储类型是整数,如果想传入元素进行 remove,需要手动装箱

List 还可以用普通for循环或者ListIterator(List特有的迭代器)进行遍历

3、并发修改异常

ConcurrentModificationException

使用迭代器遍历集合的过程中,调用了集合对象添加或删除方法,就会出现此异常

解决方法:调用迭代器的添加或删除方法

普通的迭代器有删除方法但没有添加方法

List特有的迭代器有添加方法

五、ArrayList 类

ArrayList 底层是数组,查询相对快,增删相对慢

如果初始添加了元素,那么初始长度为10

如果初始没有添加元素,那么初始长度为0

当数组满了之后,自动扩容为1.5倍

六、LinkedList 类

LinkedList 底层是双向链表,增删相对快,查询相对慢

增删首尾元素非常快

LinkedList 也有 get 方法,表面看起来是根据索引获取值

其底层会判断离头部近还是离尾部近,然后一个个找

相关文章:

  • VR光伏车棚虚拟仿真系统:开启绿色能源新视界​
  • VR溺水安全:为生命筑牢数字化防线
  • 模拟退火算法求解01背包问题:从理论到实践的完整攻略
  • 搜维尔科技VR+5G教室建设方案,推动实现教育数字化转型
  • Strands Agents:AWS开源Agent框架的技术与应用全景
  • 多模态大模型技术介绍
  • 作业过程管控——看安全生产信息化平台全方位解决方案
  • 将多个值关联到同一个 key的map(key可以重复的map)示例
  • AI炒菜机器人+一酱成菜构建万店一味的“风味引擎”
  • webpack性能优化
  • Docker Compose`down`和`stop`命令的区别
  • 前端性能优化方案
  • 使用mlpack训练分类网络
  • 101个α因子#20
  • 在 Windows 10 11 中运行 wsl.exe --update 时,如果遇到下载速度慢的问题,可以尝试以下几种加速方法:
  • python安装与使用
  • Python字符串格式化(二): f-string的进化
  • Dify大语言模型应用开发环境搭建:打造个性化本地LLM应用开发工作台
  • 自定义类型-联合体
  • web第六次课后作业--使用ApiFox实现请求响应操作
  • 武汉手机网站设计如何/网站seo查询工具
  • 云南公司建网站多少钱/简述网站建设流程
  • 天长做网站的/宁波seo推广推荐
  • wordpress imagemagick 漏洞/免费网站推广优化
  • 牡丹区建设局网站/免费发布信息网平台
  • 网站开发流程分析/jsurl转码