【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.hqwc.cn/news/703600.html

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

相关文章

Mark赶紧码住!亚马逊跨境电商八个爆款选品方法

一、Best Sellers选品法 这个方法顾名思义&#xff0c;就是大家熟悉的热销榜单选品。不做过多解释&#xff0c;在自己熟悉的品类&#xff0c;隔几天就会观察一下前100名里有没有冒出什么新品。它和现有的产品相同还是不同&#xff0c;自己做哪些搭配或者迭代会不会打败它。综合…

融资融券最低利率4.0!,融资融券利息计算公式,怎么开通?

融资融券的费率&#xff1a; 融资融券的费率主要包括融资利率和融券费率&#xff0c;这些费率的高低主要取决于证券公司的成本、政策倾向以及投资者的资金量大小。 融资利率方面&#xff0c;多数券商的优惠融资利率在5.5%到7.5%之间&#xff0c;与券商的成本和政策有关。一些…

java 项目通用数据权限设计

文章目录 前言一、常见的数据权限二、通用数据权限设计思路通用权限示例(灵活配置最简单方式)两个表业务理解最终拼接出来的sql 为: 总结 前言 权限一般分为操作权限和数据权限 操作权限: 菜单,页面,按钮 数据权限: 能看到的数据,包括各种页面的数据范围 一、常见的数据权限 …

python表白代码

以下是一个简单的示例&#xff1a; python def表白(对方): print("亲爱的" str(对方) "&#xff0c;") print("我喜欢你很久了。") print("你是如此美丽&#xff0c;聪明&#xff0c;迷人&#xff0c;让我无法自拔地爱上你。") prin…

AIGC行业现在适合进入吗

一、引言 随着人工智能技术的飞速发展&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;行业正逐渐成为科技领域的新热点。AIGC通过利用人工智能技术&#xff0c;自动生成文本、图像、音频、视频等多种形式的内容&#xff0c;极大地提高了内容生产的效率和质量。然而…

智能文档处理:解析文档场景下多模态大模型的应用与研究前沿

解析文档场景下多模态大模型的应用与研究前沿 一、TextIn 文档解析技术1. 现有大模型文档解析问题2. 文档解析技术背景3. TextIn 文档解析技术架构4. 版面分析关键技术 Layout-engine 二、TextIn 文本向量化技术三、TextIn.com Text Intelligence 一、TextIn 文档解析技术 hell…

【Linux网络编程】IO多路转接之poll

poll 1.poll初始2.poll函数接口3.poll服务器4.poll的优点缺点 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.poll初始 poll也是一种linux…

【论文阅读 | 三维重建】3D Gaussian Splatting for Real-Time Radiance Field Rendering(3DGS)

Abstract 辐射场方法最近彻底改变了用多张照片或视频捕获的新颖视图合成&#xff0c;然而实现高视觉质量仍然需要训练和渲染成本高昂的神经网络&#xff0c;而最近更快的方法不可避免地要牺牲速度来换取质量。对于无边界和完整的场景和1080P分辨率的渲染&#xff0c;目前没有任…

MIRO时,修改页签“采购订单参考”的数量时,金额不自动计算

MIRO 发票校验时&#xff0c;进入到如下界面&#xff0c;系统参考采购订单自动带出已经收货的金额和数量。 此时如果想要修改数量时&#xff0c;有些用户账号下&#xff0c;金额不自动计算&#xff0c;但是有些用户账号下&#xff0c;数量更改时&#xff0c;系统自动计算和建议…

从零开始详解OpenCV硬币检测

前言 在上一篇中我们介绍了车道线检测&#xff0c;在本篇中我们将使用类似的做法来实现对应硬币的检测。 详解 打开并转换成灰度图 img cv2.imread(coin.png) gray_image cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) plt.imshow(img)二值化 thresh, output cv2.threshold(…

精选合作伙伴:如何挑选最适合您小程序商城开发的软件公司

在选择一家合适的软件公司来协助您开发并运营小程序商城时&#xff0c;选择过程无疑是一项关键而复杂的任务。市场上的软件公司繁多&#xff0c;各具特色&#xff0c;那么&#xff0c;如何在这众多的选择中找到最适合您的合作伙伴呢&#xff1f;以下将从需求梳理、公司实力评估…

##20 实现图像风格迁移:使用PyTorch深入学习的艺术之旅

文章目录 前言项目概述准备阶段图像处理模型选择风格和内容特征提取风格迁移算法优化过程结果展示完整代码与实验项目结论参考文献 前言 图像风格迁移是一种使一幅图像呈现另一幅画作风格的技术&#xff0c;通过深度学习&#xff0c;我们能够捕捉到内容图像的结构信息和风格图…