JAVA集合
集合体系结构List系列添加元素是有序(存取顺序一致)可重复有索引Set系列添加元素无序不重复无索引Collectioncollection是单列集合的祖宗接口其功能是全部单列集合都可继承使用的collection常用方法import java.util.ArrayList; import java.util.Collection; public class Test { static void main(String[] args) { /* collection:Link(ArrayList、LinkedList)、Set(HashSet、TreeSet) collection常用方法 public boolean add(E e)添加 public void clear()清空 public boolean remove(E e)删除 public boolean contains(E e)判断是否包含 public boolean isEmpty()判断是否为空 public int size()获取元素个数 collection是一个接口无法创建它的对象只能创建它实现类的对象如ArrayList */ //多态 创建对象 CollectionInteger collnew ArrayList(); //添加元素 //如果向List集合中添加数据方法永远返回trueList系列允许元素重复 //Set集合中添加数据如果当前要添加的元素不存在返回true否则返回false coll.add(100); //清空 coll.clear(); //判断是否为空 System.out.println(coll.isEmpty()); //删除 //删除成功返回true,若要删除的元素不存在会删除失败返回false coll.add(100); coll.add(100); System.out.println(coll.remove(100)); //判断是否包含 //底层是通过equals方法判断是否包含 //如果要判断的元素是自定义类型需要重写equals方法 System.out.println(coll.contains(100)); } }public class Student { String name; int age; public Student(String name,int age){ this.namename; this.ageage; } //重写equals方法 Override public boolean equals(Object obj) { if(thisobj){ return true; } if(obj instanceof Student){ Student stu(Student)obj; if(this.name.equals(stu.name)this.agestu.age){ return true; } } return false; } } import java.util.ArrayList; import java.util.Collection; public class demo1 { static void main() { CollectionStudent collnew ArrayList(); //创建三个学生对象 Student stu1new Student(张三,18); Student stu2new Student(李四,19); Student stu3new Student(王五,20); //将学生对象添加到集合中 coll.add(stu1); coll.add(stu2); coll.add(stu3); //如果同名同年龄判定为同一个学生需要在Student类中重写equals Student stu4new Student(张三,18); System.out.println(coll.contains(stu4));//true } }集合的遍历迭代器遍历IteratorE iterator(): 获取一个迭代器boolean hasNext(): 判断当前位置是否有元素可以被取出E next(): 获取当前位置的元素,将迭代器对象移向下一个索引位置void remove(): 删除迭代器对象当前指向的元素import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class demo1 { static void main() { /* 迭代器遍历 IteratorE iterator():获取一个迭代器 boolean hasNext():判断当前指向的位置是否有元素 E next():获取当前指向的元素并将迭代器指向后一个位置 迭代器的细节注意点 1.报错NoSuchElementException 2.迭代器遍历完毕指针不会复位 3.循环中只能用一次next方法 4.迭代器遍历时不能用集合的方法进行增加或者删除 如果我实在要删除那么可以用迭代器提供的remove方法进行删除 void remove(): 删除迭代器对象当前指向的元素 */ //1.创建集合并添加元素 CollectionString collnew ArrayList(); coll.add(aaa); coll.add(bbb); coll.add(ccc); coll.add(ddd); //2.获取迭代器默认指向集合的0索引处 IteratorString itcoll.iterator(); //3.使用循环遍历集合 while(it.hasNext()){ String strit.next(); System.out.println(str); } //当上面循环结束之后迭代器的指针已经指向了最后没有元素的位置 //System.out.println(it.next());//NoSuchElementException //迭代器遍历完毕指针不会复位 System.out.println(it.hasNext());//false //如果我们要继续第二次遍历集合只能再次获取一个新的迭代器对象 IteratorString it2 coll.iterator(); while(it2.hasNext()) { String str it2.next(); System.out.println(str); } //迭代器删除元素 IteratorString it3 coll.iterator(); while(it3.hasNext()){ String strit3.next(); if(str.equals(ccc)){ it3.remove(); } } System.out.println(coll); } }迭代器源码分析增强for所有单列集合和数组才能用增强for遍历public class MyCollectonDemo1 { public static void main(String[] args) { ArrayListString list new ArrayList(); list.add(a); list.add(b); list.add(c); list.add(d); list.add(e); list.add(f); //1,数据类型一定是集合或者数组中元素的类型 //2,str仅仅是一个变量名而已,在循环的过程中,依次表示集合或者数组中的每一个元素 //3,list就是要遍历的集合或者数组 for(String str : list){ System.out.println(str); } } }lambda表达式public class A07_CollectionDemo7 { public static void main(String[] args) { /* lambda表达式遍历 default void forEach(Consumer? super T action): */ //1.创建集合并添加元素 CollectionString coll new ArrayList(); coll.add(zhangsan); coll.add(lisi); coll.add(wangwu); //2.利用匿名内部类的形式 //底层原理 //其实也会自己遍历集合依次得到每一个元素 //把得到的每一个元素传递给下面的accept方法 //s依次表示集合中的每一个数据 /* coll.forEach(new ConsumerString() { Override public void accept(String s) { System.out.println(s); } });*/ //lambda表达式 coll.forEach(s - System.out.println(s)); } }List方法介绍方法名描述void add(int index,E element)在此集合中的指定位置插入指定的元素E remove(int index)删除指定索引处的元素返回被删除的元素E set(int index,E element)修改指定索引处的元素返回被修改的元素E get(int index)返回指定索引处的元素import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; public class demo1 { static void main() { /* List系列集合独有方法 void add(int index,E e):在指定索引位置添加元素原来处元素依次后移 E get(int index):获取指定索引位置的元素 E remove(int index):删除指定索引位置的元素 E set(int index,E e):将指定索引位置的元素替换为新元素,返回被修改的元素 */ //1.创建一个集合 ListString listnew ArrayList(); //2.添加元素 list.add(a); list.add(b); list.add(c); //指定位置插入元素 list.add(1,Q); //删除指定索引位置的元素 list.remove(2); //set方法将指定索引位置的元素替换为新元素 list.set(1,W); //get方法获取指定索引位置的元素 System.out.println(list.get(1));//W } }两个删除方法import java.util.ArrayList; import java.util.Collection; import java.util.List; public class Test { static void main(String[] args) { /* List系列集合中两个删除方法 1.collection中直接删除元素public boolean remove(E e)删除指定元素 2.List通过索引删除元素E remove(int index):删除指定索引位置的元素 */ ListInteger listnew ArrayList(); list.add(1); list.add(2); list.add(3); //此时删除的是索引为1的元素2 //因为再调用方法的时候如果出现了重载优先调用实参和形参类型一致的方法 //1是int型对应List的remove(int index)方法 list.remove(1); //删除元素为1需要手动装箱 list.remove(Integer.valueOf(1)); } }列表迭代器ListIteratorE//获取一个列表迭代器的对象里面的指针默认也是指向0索引的 //相比迭代器额外添加了一个方法在遍历的过程中可以添加元素 ListIteratorString it list.listIterator(); while(it.hasNext()){ String str it.next(); if(bbb.equals(str)){ //qqq it.add(qqq); } } System.out.println(list);遍历过程中需要删除选迭代器添加元素选列表迭代器像操作索引选普通forArrayList1. 创建ArrayList对象的时候他在底层先创建了一个长度为0的数组。2. 添加第一个元素时底层会创建一个新的长度为10数值为null的数组数组名字elementDate定义变量size0。size这个变量有两层含义①元素的个数也就是集合的长度②下一个元素的存入位置添加元素添加完毕后size3.存满时会扩容1.5倍4.如果一次添加多个元素1.5倍还放不下则新创建数组的长度以实际为准扩容为101.5倍扩容/实际为准LinkedList底层是双链表结构查询慢增删快操作首尾元素快刚开始创建的时候底层创建了两个变量一个记录头结点first一个记录尾结点last默认为null添加第一个元素时底层创建一个结点对象first和last都记录这个结点的地址值添加第二个元素时底层创建一个结点对象第一个结点会记录第二个结点的地址值last会记录新结点的地址值

相关新闻

LeetCode热题100---哈希

LeetCode热题100---哈希

什么是哈希 1. 哈希表的核心思想 哈希表内部其实是一个数组,但它的特殊之处在于有一个哈希函数。 当你存入一个键值对时,哈希函数会根据键计算出一个整数(哈希值),然后把这个值映射到数组的某个位置(下标…

2026/5/17 9:23:17 阅读更多 →
pcb板重叠连接方法 猎板叠孔技术

pcb板重叠连接方法 猎板叠孔技术

越复杂的设计,对连接可靠性的要求就越高。PCB 堆叠设计不但能大幅提升空间利用率,还是解决信号干扰以及优化散热的关键手段。近期我在评测国内好多家 PCB 厂商的工艺能力之际,重点测试了一项关乎产品成败的细节,那就是板与板之间的…

2026/7/3 6:20:08 阅读更多 →
求良性和恶性肺结节的数据集,预算100

求良性和恶性肺结节的数据集,预算100

求良性和恶性肺结节的数据集,要处理好的图片格式的。预算100,我看了合适了直接微信转钱不墨迹

2026/5/17 9:23:15 阅读更多 →

最新新闻

input_report_key + input_sync:按键事件的正确报告姿势

input_report_key + input_sync:按键事件的正确报告姿势

input_report_key input_sync:按键事件的正确报告姿势这个仓库已经开源!所有教程,主线内核移植,跑新版本imx-linux/uboot都在这里,或者一起来尝试跑7.1的Linux!欢迎各位大佬观摩!喜欢的话点个⭐…

2026/7/5 13:10:06 阅读更多 →
《南街面包店》 松雪酥|小说|txt下载|番外|全文免费阅读

《南街面包店》 松雪酥|小说|txt下载|番外|全文免费阅读

南街面包店 松雪酥|小说|txt下载|番外|全文免费阅读资料可下载《南街面包店》松雪酥 全文https://pan.baidu.com/s/1lewzOmQuG2M2xEELvONyzQ?pwd2bb8 English Practice Set 61 个人练习草稿,随便记几道题。Part 1 Vocabulary Choose the best word.She opened a …

2026/7/5 13:08:05 阅读更多 →
算法优化中的数学建模与理论界限分析的技术7

算法优化中的数学建模与理论界限分析的技术7

引言算法优化的核心目标与意义数学建模与理论界限分析在算法优化中的作用文章结构与内容概览数学建模基础算法问题的数学抽象方法离散与连续问题的形式化描述目标函数与约束条件的定义常见数学模型类型线性规划与非线性规划动态规划与贪心算法的数学框架图论模型(如…

2026/7/5 13:08:05 阅读更多 →
Agentic AI:聊天机器人到自主执行系统,从岗位要求反推能力栈

Agentic AI:聊天机器人到自主执行系统,从岗位要求反推能力栈

聊《Agentic AI:聊天机器人到自主执行系统,从岗位要求反推能力栈》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要这篇面向关注 AI 产品化和自动化系统的开发者,但不会把“Ag…

2026/7/5 13:02:02 阅读更多 →
PCB设计中地线与电源线加宽的技术要点与实战分析

PCB设计中地线与电源线加宽的技术要点与实战分析

1. PCB布线中地线与电源线加宽的核心逻辑 在PCB设计领域,地线(GND)和电源线(VCC)的走线宽度处理是影响电路性能的关键因素之一。不同于信号线可以相对灵活地调整宽度,这两类走线需要特殊对待的根本原因在于…

2026/7/5 12:58:00 阅读更多 →
基于YOLOv10的红外目标检测实战指南

基于YOLOv10的红外目标检测实战指南

1. 项目背景与核心价值去年夏天,我在参与一个山区救援项目时,亲眼目睹了传统无人机监控系统的局限性。在浓烟和夜间环境下,普通摄像头完全失效,而热成像设备虽然能捕捉到热源,却无法准确识别是人、动物还是车辆。正是这…

2026/7/5 12:51:58 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻