Java集合学习1:Collection集合、List(一)

简介: 概念:对象的容器,定义了对多个对象进行操作的常用方法。可以实现数组的功能。

什么是集合


概念:对象的容器,定义了对多个对象进行操作的常用方法。可以实现数组的功能。


和数组的区别


数组长度固定,集合长度不固定

数组可以存储基本类型和引用类型,集合只能存储引用类型


进行集合接口的学习时候,多看JDK的API。里面有很多方法,可以自己研究。


Collection体系集合


d517d37c0268a8dc09fe81c85e8ce95c_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_20,color_FFFFFF,t_70,g_se,x_16.png

46096100dc3f6ad23a7e1d5bfc8969d9_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_20,color_FFFFFF,t_70,g_se,x_16.png

iterator()是collection的元素上进行迭代的迭代器。


Collection实践


1、添加元素

2、删除元素

3、遍历元素

4、判断


首先创建一个集合,并添加元素。

71fbba9851f412cf339a42001db9ebdd_c858ea500b71418db0153533d4232977.png

删除元素、与清空元素

97f6060bed1ae08aac6a045ce0f68d74_907488f77d0343199829e43f2ae1719e.png

判断集合是否包含这个元素

101c1f9ecec521e308f102a8cb7e0dca_7d25c8c2cf104c84bef2a655df9c3f01.png

集合遍历


使用增强for(增强for不需要下标,普通for需要下标,但是collection是没有下标的)

两种方法:

第一种:增强for

第二种:迭代器 Iterator,对collection的迭代器(迭代就是循环或者遍历)

8c371bf5c1363ef82fb0586789c4c24b_376b40a9eb2449e4b8fd5f0f1510c091.png

通过上面的三个方法实现集合的遍历迭代。

增强for的代码如下:

4b0d81eb18219a631bc7d47310fb1c49_942df7553dd84fda9c7c1b4c87c72a6b.png

迭代器代码如下:

577355d51d86c3af8b60546b4d9d6112_88514068b19f4c96ac77b2f3c88c5df0.png

迭代过程当中,是不允许使用collection的删除方法的。

df0739e56ba9a0cc34e6d8b9a27771b9_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_15,color_FFFFFF,t_70,g_se,x_16.png

迭代器要求在迭代过程中,不可以使用集合的其他方法来并发修改。

如果想删除的话,那么就可以用迭代器自己的方法,改成it.remove()就可以了。

Collection:保存信息


3e48b394ea8996b0bb200e43b2c2a89f_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_11,color_FFFFFF,t_70,g_se,x_16.png

33d09cf6ce3e54051b329c60df96a5f5_e51761a97f184307b144c17dd5684b5f.png

注意删除collection中的对象remove时候是不会删除是s1本身的,因为集合中存的是地址。

s1本身是在堆中的。

增强for中用一个强转换。

af64cb8e6a59c2cfc9b364b7e95d4764_a2d84e8abbf4403e9eb29a3978a15ca9.png

5e085a29c68bf7c37346825f170daec2_7eb3799c19e640e8b5453e884d9470ae.png

注意这里判断是否包含中(new。。)是行不通的。

List子接口


特点:有序的、有下标、元素可以重复。

3159b1f8ccf5eca7648d5b3a1aab759f_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_20,color_FFFFFF,t_70,g_se,x_16.png

list中多了两个迭代器。

a3ac4dabb67997dd6b1e7b10183ad61e_ef7267a7e4024b27876b210988a85e50.png

list子接口的使用


d1d07b104b273ef0bb2f8fa604a6c841_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_11,color_FFFFFF,t_70,g_se,x_16.png


list的遍历1:for遍历

7e4760aa5b71d3565e3443d0726a6164_33273aeb1af14196b2f54dead3158673.png

lisit的遍历2:使用增强for

fc34d2f2dad0809cb482bf5b0b594ec5_4e1d9d77b4b842aaa923eff7078c51a6.png

list的遍历3:使用迭代器

fdca4307d2f5d942419cbbb89cdc30f4_9d8633f263e9494295f8d6ddf47d6211.png

list的遍历4:列表迭代器

3ae802429ae689e93a3bdbec7a3798b4_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_20,color_FFFFFF,t_70,g_se,x_16.png

4ce7a4eb880b8195b2679d719bbeace9_a14a17cf770e4ea58de954f5d294a407.png

list案例

6f0150a8ed5eab0ea95e597bc0eb0805_207e07831bac45a5b4d3a94f463b094e.png


注意这里的20不是基本类型的20.而是Interger类型的20.因为集合是不能装基本类型的,所以被进行了自动装箱。

同时注意remove(20)是删除第20个位置的,而不是删除20这个对象。

如果一定想使用20来删除,需要装箱来删除。list.remove(new Integer(20));就可以做到了。

而这里之所以能使用new来删除,是因为整数缓冲的原因。

关于整数缓冲是因为自动装箱自动为-127-127准备了自动装箱,地址是一样的,直接进行已经有的对象进行了复用。

目录
打赏
0
0
0
0
23
分享
相关文章
Java线程池ExecutorService学习和使用
通过学习和使用Java中的 `ExecutorService`,可以显著提升并发编程的效率和代码的可维护性。合理配置线程池参数,结合实际应用场景,可以实现高效、可靠的并发处理。希望本文提供的示例和思路能够帮助开发者深入理解并应用 `ExecutorService`,实现更高效的并发程序。
34 10
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
93 4
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
53 1
Java 中 List 分片的 5 种方法!(5)
Java 中 List 分片的 5 种方法!(5)
331 0
Java 中 List 分片的 5 种方法!(5)
Java 中 List 分片的 5 种方法!(4)
Java 中 List 分片的 5 种方法!(4)
455 0
Java 中 List 分片的 5 种方法!(4)
Java 中 List 分片的 5 种方法!(3)
Java 中 List 分片的 5 种方法!(3)
631 0
Java 中 List 分片的 5 种方法!(3)
Java 中 List 分片的 5 种方法!(2)
Java 中 List 分片的 5 种方法!(2)
445 0
Java 中 List 分片的 5 种方法!(2)
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
56 14

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等