【Java基础】集合(1) —— Collection

  • 存储不同类型的对象:
    • Object[] arr=new object[5];
    • 数组的长度是固定的, 添加或删除数据比较耗时
  • 集合:
    • Object[] toArray
    • 可以存储不同类型的对象
    • 随着存储的对象的增加,会自动的扩容
    • 集合提供了非常丰富的方法,便于操纵
    • 集合相当于容器,可以存储多个对象
    • 集合存的是对象的引用

在这里插入图片描述在这里插入图片描述

每种集合存储数据的方式不同,使用的数据结构不同,有各自的优缺点

在项目中根据底层的数据结构选择适合的集合使用。

共性方法

Collection中定义的是最共性的方法:

  1. 添加

    • boolean add(Object o)
      多态集合中存储的都是对象集合中存储的是对象的地址
    • boolean addAll(Collection<? extends E> c)
      把另一个集合中的数据加入到当前集合
    Collection col=new ArrayList();
    col.add("java");
    col.add("html");
    col.add("mysql");
    col.add(66);
    Collection col2=new ArrayList();
    col2.add("bigdata");
    col2.add("python");
    col.addAll(col2);
    sop(col);//[java, html, mysql, 66, bigdata, python]
    
  2. 删除

    • boolean remove(Object o)
      从集合中删除某个对象
    • boolean removeAll(Collection<?> c)
      从当前集合中删除和另一个集合相同的数据
    • boolean retainAll(Collection c)
      从当前集合中保留和另一个集合相同的数据
    • void clear()
      清空集合
    • boolean removelf(Predicate predicate) boolean test(T t)
      依次遍历集合中的每个对象,如果test方法返回true,则删除这个对象
    //使用匿名内部类实现test方法:
    col.removeIf(new Predicate(){public boolean test(Object t){//参数用来依次接收集合中每个对象if(t instanceof String){String ss=(String)t;if(ss.startsWith("java"))return true;}return false;}
    });
    
    //使用lambda表达式实现test方法:
    col.removeIf(t->{if(t instanceof String){String ss=(String)t;if(ss.startsWith("java"))return true;}return false;
    }); 
    //简化书写:
    col.removeIf(t->((String)t).startsWith("java"));
    
  3. 判断

    • boolean contains(Object o)
      判断是否包含某个对象
      依据equals方法判断是否包含某个元素
    import java.util.*;
    class Demo2{public static void main(String[] args){ArrayList list=new ArrayList();list.add(new Student("zhangsan",20));list.add(new Student("lisi",25));list.add(new Student("lisi",25));//姓名年龄相同的认为是同一个对象,去重ArrayList list2 = quChong(list);System.out.println(list2);}//去除集合中重复的元素public static ArrayList quChong(ArrayList list){ArrayList list2=new ArrayList();for(int i=0;i<list.size();i++){Object obj = list.get(i);//判断新集合中是否包含该元素if(!list2.contains(obj))//依据equals方法判断是否包含list2.add(obj);}return list2;}
    }
    class Student{………………public boolean equals(Object obj){if(!(obj instanceof Student))throw new ClassCastException("类型不对");Student stu=(Student)obj;return this.name.equals(stu.name)&&this.age==stu.age;}
    }
    
    • boolean containsAll(Collection<?> c)
      判断是否包含另一个集合中的所有对象
    • boolean isEmpty()
      判断集合是否为空
    • boolean equals(Object o)
      判断两个集合中的对象是否都一致
  4. 获取

    • Iterator iterator()
      获取集合中的对象
      在使用迭代器迭代的过程中不允许对集合进行添加,修改,删除元素
    Iterator ite = col.iterator();//得到集合的迭代器
    while(ite.hasNext()){Object obj = ite.next();//col.add("haah"); //ConcurrentModificationException //在使用迭代器迭代的过程中不允许对集合进行添加,修改,删除元素System.out.println(obj);
    }
    while(ite.hasPrevious()){Object obj=ite.previous();System.out.println(obj);
    }
    
    • default void forEach(Consumer<? super T> action) void accept(T t) 参数用来依次接收集合中的每个对象
    col.forEach(t->System.out.println(t));
    col.forEach(System.out::println);
    
    • int size()
      获取集合中对象的个数
  5. 集合变数组

    • Object[] toArray()
      防止被随意地添加或删除
  6. 遍历集合的三种方式

    • Iterator iterator()
    • forEach()
    • 增强的for循环可以用于数组和Collection集合
    for(Object obj:col)
    {System.out.println(obj);
    }
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

冯喜运:5.16黄金是否突破阻力?黄金原油趋势分析

【黄金消息面分析】&#xff1a;周四(5月16日)亚市盘中&#xff0c;现货黄金延续昨日升势&#xff0c;金价目前最高触及2397.44美元/盎司&#xff0c;为4月19日以来新高。FXStreet首席分析师Valeria Bednarik撰文&#xff0c;对黄金技术前景进行分析。Bednarik指出&#xff0c;…

「51媒体」北京财经媒体有哪些?媒体邀约宣传

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 北京作为中国的首都&#xff0c;拥有众多的财经媒体&#xff0c;这些媒体在财经新闻报道、经济分析、市场研究等方面发挥着重要作用。根据搜索结果&#xff0c;以下是一些北京地区的财经…

CV每日论文--2024.5.15

1、Can Better Text Semantics in Prompt Tuning Improve VLM Generalization? 中文标题&#xff1a;更好的文本语义在提示微调中能否提高视觉语言模型的泛化能力? 简介&#xff1a;这篇论文介绍了一种新的可学习提示调整方法,该方法超越了仅对视觉语言模型进行微调的传统方…

Lazyboy品牌发布会“球幕气膜”

Lazyboy品牌发布会“球幕气膜”为品牌活动提供了一个独特、现代化、环保的展示空间。这座球幕气膜不仅为发布会提供了一个视觉震撼的场地&#xff0c;也为与会嘉宾带来了全新的体验。作为轻空间&#xff08;江苏&#xff09;膜科技有限公司&#xff08;以下简称“轻空间”&…

使用Docker在阿里云ECS上部署Gitlab,提供代码托管、CICD 和 docker镜像服务

文章目录 使用Docker在阿里云ECS上部署Gitlab1.购买一个数据&#xff0c;挂载到/data用于存储gitlab相关数据2. 部署docker引擎3. 调整ssh的默认端口&#xff0c;将22端口留给gitlab4. 部署gitlab5. 进入docker容器获取gitlab的默认密码6. 登录gitlab&#xff0c;完成gitlab-ru…

linux ndk编译搭建测试

一、ndk下载 NDK 下载 | Android NDK | Android Developers 二、ndk环境变量配置 ndk解压&#xff1a; unzip android-ndk-r26d-linux.zip 环境变量配置&#xff1a; export NDK_HOME/rd/own/test/android-ndk-r26d/ export PATH$PATH:$NDK_HOME 三、编译测试验证 …

LeetCode-2589. 完成所有任务的最少时间【栈 贪心 数组 二分查找 排序】

LeetCode-2589. 完成所有任务的最少时间【栈 贪心 数组 二分查找 排序】 题目描述&#xff1a;解题思路一&#xff1a;贪心暴力解题思路二&#xff1a;栈二分查找解题思路三&#xff1a;简化版 题目描述&#xff1a; 你有一台电脑&#xff0c;它可以 同时 运行无数个任务。给你…

mac安装两个版本谷歌浏览器;在mac运行不同版本的chrome浏览器

场景 正常情况下&#xff0c;mac上只能安装一个版本的chrome浏览器&#xff0c;即使你安装了两个版本的&#xff0c;打开老旧版本时候也会自动切换成最新版的浏览器 故本文主要解决如何下载和在mac运行不同版本的chrome浏览器 文章目录 场景一、下载1.mac本身就有一个最新版ch…

Java语言saas模式云HIS系统源码 前端Angular+后台SpringBoot云HIS系统源码 HIS系统适合哪些类型的医院?

Java语言saas模式云HIS系统源码 前端Angular后台SpringBoot云HIS系统源码 HIS系统适合哪些类型的医院&#xff1f; 云HIS系统&#xff08;医院信息系统&#xff09;是对医院及其所属各部门的人、财、物进行综合管理&#xff0c;对在医疗活动各阶段产生的数据进行采集、储存、处…

CCF20181201——小明上学

CCF20181201——小明上学 代码如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int r,y,g,n,k[101],t[101],sum0;cin>>r>>y>>g;cin>>n; for(int i0;i<n;i){cin>>k[i]>>t[i];if(k[i]0||k[i]1)sumt[i];…

ITSM的服务台如何让工作更流畅

在现代企业的信息技术管理框架内&#xff0c;IT服务管理&#xff08;IT Service Management, ITSM&#xff09;体系扮演着至关重要的角色&#xff0c;而其中的服务台则是这一复杂体系的心脏地带。服务台不仅仅是解答技术疑问的一线窗口&#xff0c;更是企业IT运维效率与用户满意…

FENDI CLUB啤酒,为何女生喜欢?

精酿啤酒已经成了女生喜欢的饮品&#xff0c;在日剧《无法成为野兽的我们》里&#xff0c;主人公小晶永远保持标准笑容&#xff0c;完美完成所有的工作。只有一个人的时候&#xff0c;她才会放下习惯性的微笑&#xff0c;显露自己的疲惫。小晶缓解疲惫&#xff0c;就是下班后去…

尽微好物:从0到10亿+的抖音电商的TOP1“联盟团长”,如何使用NineData实现上云下云

杭州尽微供应链是抖⾳平台⽉均带货10E的TOP1“联盟团⻓”&#xff0c;是字节跳动⼀级代理商&#xff0c;巨量千川指定服务商&#xff0c;拥有商品库9万&#xff0c;是⾏业领先的电商供应链平台&#xff0c;达⼈陪跑机构。 杭州尽微供应链以天猫、京东抖音电商业务为依托&#x…

HCIP-Datacom(H12-821)题库补充(5月16日)

最新 HCIP-Datacom&#xff08;H12-821&#xff09;完整题库请扫描上方二维码访问&#xff0c;持续更新中。 以下关于配置防火墙安全优先级的描述&#xff0c;错误的是哪一项&#xff1f; A&#xff1a;不新建与默认安全区域同名的安全区域 B&#xff1a;同一系统中&#xff0c…

镊子蜡烛如何设置止盈止损?Anzo Capital昂首资本盈利收场

通过上一篇文章各位聪明的投资者&#xff0c;都已经知道了什么是镊子蜡烛图以及如何抓住反转进行交易&#xff0c;同时也有很多投资者不知道如何设置止盈止损&#xff1f;今天Anzo Capital昂首资本就和各位投资者一起探讨如何盈利收场。 看跌的镊子模式如何交易&#xff1f;首…

【数据结构】树(Tree)

✨✨✨专栏&#xff1a;数据结构 &#x1f9d1;‍&#x1f393;个人主页&#xff1a;SWsunlight 目录 一、基本概念&#xff1a; 1、定义&#xff1a; ​编辑 ​编辑 2、树的成分&#xff1a; 3、树的性质&#xff1a; 二、存储方式&#xff1a; ​编辑 双亲表示法…

【C语言每日题解】用函数来模拟实现strlen()、strcpy()、strcmp()、strcat()

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ 学习了函数后&#xff0c;老师让我们用函数来实现上面这四个字符串函数。 我们首先来了解一下这四个字符串函数&#xff1a; 1.strlen函数 用于获取字符串长度&#xff08;不包括末尾…

【源码】相亲交友系统全新UI/情感测试/婚庆中介/交友系统

【交友】相亲交友系统全新UI/情感测试/婚庆中介/交友系统 带商城&#xff0c;情感测试。 https://www.52codes.cc/codes/qt

从开发板导出根文件系统并修改(Ubuntu)

前面提到过基于ubuntu-base去构建根文件系统基于Ubuntu-base构建根文件系统-CSDN博客&#xff0c;但是有时候我们并不需要重头开始&#xff0c;可以基于现有的根文件系统做调整。又或者我们直接在出厂的系统上去搭建好自己的运行环境并且编译出自己想要的程序&#xff0c;现在要…

医学科技查新中对查新点的撰写方法!附案例讲解!

我国的科技查新工作最早是从医学领域开始的&#xff0c;始于1985年中国科学院医学情报所&#xff0c;后来逐步发展到工、农等其 他各个领域。医学科技查新包括立项查新和成果查新两个部分&#xff0c;其中医学立项查新&#xff0c;它是指在医学科研项目申报开题之前&#xff0c…