【Java集合】Collection接口常用方法

news2024/11/29 0:32:41

文章目录

  • Collection接口和常用方法
    • > Collection接口常用方法
    • > Collection接口遍历元素:使用Iterator(迭代器)
    • > Collection接口遍历元素:增强 for 循环

Collection接口和常用方法

Collection接口实现类的特点:

public interface Collection<E> extends Iterable<E>
  1. Collection实现子类可以存放多个元素,每个元素可以是Object
  2. 有些Collection的实现类,可以存放重复的元素,有些不可以;
  3. 有些Collection的实现类,有些是有序的(List),有些则不是有序(Set);
  4. Collection接口没有直接的实现子类,是通过它的子接口List和Set来实现的;

> Collection接口常用方法

  • add : 添加单个元素;
  • remove : 删除指定元素;
  • contains : 查找元素是否存在;
  • size : 获取元素个数;
  • isEmpty : 判断是否为空;
  • clear : 清空;
  • addAll : 添加多个元素;
  • containaAll :查找多个元素是否都存在;
  • removeAll : 删除多个元素;

以 ArrayList 实现类来演示:

import java.util.ArrayList;
import java.util.List;

public class CollectionMethod {
    public static void main(String[] args) {
        //1.add:添加单个元素
        List list = new ArrayList();
        list.add("字符串");
        list.add(128);//list.add(new Integer(10))
        list.add(true);
        System.out.println("list="+list);//list=[字符串, 128, true]

        //2.remove:删除指定元素
        //list.remove(0);//删除第一个元素
        //System.out.println("list="+list);//list=[128, true]
        list.remove("字符串");//指定删除某个元素
        System.out.println("list="+list);//list=[128, true]

        //3.contains:查找某个元素是否存在
        System.out.println(list.contains(128));//true

        //4.size:返回元素个数
        System.out.println(list.size());//2

        //5.isEmpty:判断是否为空
        System.out.println(list.isEmpty());//false

        //6.clear:清空
        list.clear();
        System.out.println("list= "+list);//list= []

        //7.addAll:添加多个元素
        ArrayList list2 = new ArrayList();
        list2.add("开心");
        list2.add("每");
        list2.add(1);
        list2.add("天");
        list.addAll(list2);//传入一个集合
        System.out.println("新的list:"+list);//新的list:[开心, 每, 1, 天]

        //8.containsAll:查找多个元素是否存在
        System.out.println(list.containsAll(list2));//true

        //9.removeAll:删除多个元素
        list.removeAll(list2);
        System.out.println("list="+list);//list=[]
    }
}

> Collection接口遍历元素:使用Iterator(迭代器)

  1. Iterator对象称为迭代器,主要用于遍历Collection集合中的元素;
  2. 所有实现了Collection接口的集合类都有一个 iterator( ) 方法,用以返回一个实现了Iterator接口的对象,即返回一个迭代器;
  3. Iterator仅用于遍历集合,Iterator本身并不存放对象;
迭代器执行原理:
Iterator iterator = new coll.iterator(); 得到一个集合迭代器
hasNext() :判断是否还有下一个元素
while(iterator.hasNext()){
	next()作用:指针下移,将下移后以后集合位置上的元素返回
	System.out.println(iterator.next());
}

每 next() 一次,箭头下移一次:
在这里插入图片描述

注意:在调用 iterator.next( ) 方法之前,必须要调用iterator.hasNext( ) 进行检测;若不调用,且下一条记录无效,直接调用 iterator.next( ) 会抛出 NoSuchElementException异常。

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionIterator {
    public static void main(String[] args) {
        Collection col = new ArrayList();

        col.add(new Book("三国演义","罗贯中",10.1));
        col.add(new Book("红楼梦","曹雪芹",34.6));
        col.add(new Book("西游记","吴承恩",28.8));
        System.out.println("col : "+col);
//col : [Book{name='三国演义', author='罗贯中', price=10.1}, Book{name='红楼梦', author='曹雪芹', price=34.6}, Book{name='西游记', author='吴承恩', price=28.8}]
        
        //遍历 col
        //1.先得到col集合对应的迭代器
        Iterator iterator = col.iterator();
        
        //2.使用while循环遍历
        //快捷键快速生成while循环 输入itit回车即可
        //crtl+j 可以查看当前所有快捷键
        while(iterator.hasNext()){ //判断是否还有数据
            //next()返回下一个元素,类型是Object
            Object obj = iterator.next();
            System.out.println(obj);
            //Book{name='三国演义', author='罗贯中', price=10.1}
            //Book{name='红楼梦', author='曹雪芹', price=34.6}
            //Book{name='西游记', author='吴承恩', price=28.8}
        
        //3.当退出while循环后,此时iterator迭代器指向最后的元素
        //iterator.next(); --> NoSuchElementException
        //4.若还要使用迭代器,需要重置迭代器
        iterator = col.iterator();             
        }
    }
}

class Book{
    private String name;
    private String author;
    private double price;

    public Book(String name, String author, double price) {
        this.name = name;
        this.author = author;
        this.price = price;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}

> Collection接口遍历元素:增强 for 循环

增强for循环,可以代替 iterator迭代器,特点:增强for循环就是简化版的iterator,本质一样,只能用于遍历集合或数组;

基本语法:

for(元素类型 元素名 : 集合名或数组名){
		访问元素
}
import java.util.ArrayList;
import java.util.Collection;

public class CollectionIterator {
    public static void main(String[] args) {
        Collection col = new ArrayList();

        col.add(new Book("三国演义","罗贯中",10.1));
        col.add(new Book("红楼梦","曹雪芹",34.6));
        col.add(new Book("西游记","吴承恩",28.8));

        //增强for循环  不仅可以用于集合,数组也同样适用
        //底层仍然是迭代器iterator 相当于简化版迭代器
        //快捷键 输入I后回车
        for (Object book:col) {
            System.out.println(book);
        }
        //Book{name='三国演义', author='罗贯中', price=10.1}
        //Book{name='红楼梦', author='曹雪芹', price=34.6}
        //Book{name='西游记', author='吴承恩', price=28.8}

    }
}

class Book{
    private String name;
    private String author;
    private double price;

    public Book(String name, String author, double price) {
        this.name = name;
        this.author = author;
        this.price = price;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}

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

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

相关文章

CPU中的核与进程,线程间的关系讲解(操作系统基础概念)

CPU中的核与进程&#xff0c;线程间的关系讲解&#xff08;操作系统基础概念&#xff09; CPU中的内核 概念 CPU内核&#xff08;Die&#xff09;是CPU中间的核心芯片&#xff0c;由单晶硅制成&#xff0c;用来完成所有的计算、接受/存储命令、处理数据等&#xff0c;是数字…

Node.js | 详解 JWT 登录验证 的工作原理

&#x1f9d1;‍&#x1f4bc; 个人简介&#xff1a;一个不甘平庸的平凡人&#x1f36c; &#x1f5a5;️ 本系列专栏&#xff1a;Node.js从入门到精通 &#x1f5a5;️ TS知识总结&#xff1a;十万字超详细TS知识点总结 &#x1f449; 你的一键三连是我更新的最大动力❤️&…

【Java系列】一篇文章快速了解Java语言概述

Java语言概述1.Java简介2.JVM2.1JVM介绍2.2JVM特性3.Java特性4.搭建Java程序开发环境5.编写第一个Java应用程序6.小结第一个程序1.Java简介 java是面向对象的一门程序设计语言随着Java技术在web方面的不断成熟&#xff0c;已经成为Web应用程序的首选开发语言。后台开发&#x…

FRP进阶篇之安全认证

目录 一、前言 二、通信加密 1、概述 2、使用 三、BasicAuth 鉴权 1、概述 2、使用 2.1、客户端配置 2.2、启动客户端 2.3、效果验证 四、TLS双向身份验证 1、概述 2、使用 2.1、生成证书 2.2、服务端配置 2.3、客户端配置 一、前言 通过上次的《FRP入门篇》相信…

毕业设计-机器学习图像卡通动漫化图像风格迁移

前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投…

关于旅游景点主题的HTML网页设计——北京景点 7页(带订单购物车)Html+Css+javascript

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 游景点介绍 | 旅游风景区 | 家乡介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&#xff1a;结构 CSS&…

redhat 新开启一个ssh端口

查看是否安装ssh服务 rpm -qa |grep ssh2.开启ssh服务 systemctl start sshd.service3.修改ssh配置文件 vi /etc/ssh/sshd_config4.复制Port行并修改端口号 此时已经新增了一个端口 5.启用新端口 sudo semanage port -a -t ssh_port_t -p tcp 22116.防火墙放开新增的端口 …

最全面的SpringMVC教程(二)——SpringMVC核心技术篇

前言 本文为 【SpringMVC教程】核心技术篇 相关详细介绍&#xff0c;具体将对视图和模型拆分&#xff0c;重定向与转发&#xff0c;RequestMapping与其衍生注解&#xff0c;URL 模式匹配&#xff0c;牛逼的传参&#xff0c;设定字符集&#xff0c;返回json数据&#xff08;序列…

【Hack The Box】linux练习-- seal

HTB 学习笔记 【Hack The Box】linux练习-- seal &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1f36d…

②【Maven】从0上手Maven的安装与配置 - 最全教程 (下载 + 配置 + 环境变量 )

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ Maven >>> 下载、安装、配置一、下载…

jenkins关联github

将Jenkins和github关联起来&#xff0c;实现自动化集成 GitHub侧 1、生成secret.txt secret在github上被称为token 进去GitHub --> Settings --> Developer settings --> Personal access tokens -> Generate new token创建一个新的token,勾选两处标红的地方 点…

Flutter高仿微信-第58篇-扫一扫

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 实现代码&#xff1a; //二维码扫一扫 Future _scanQR() async {try {final re…

外设驱动库开发笔记49:BY25Qxx存储器驱动

在有一些应用中&#xff0c;我们可能需要大一些容量的存储单元&#xff0c;而实现的形式多种多样&#xff0c;在这一篇中我们将来讨论怎么使用BY25QXXX系列NOR FLASH存储器的问题。 1、功能概述 在开始实现BY25QXXX系列NOR FLASH存储器的驱动之前&#xff0c;我们需要先了解一…

Mysql-解决创建存储函数This function has none of DETERMINISTIC

问题 当二进制日志启用后&#xff0c;这个变量就会启用。它控制是否可以信任存储函数创建者&#xff0c;不会创建写入二进制日志引起不安全事件的存储函数。 如果设置为0&#xff08;默认值&#xff09;&#xff0c;用户不得创建或修改存储函数&#xff0c;除非它们具有除CRE…

COLMAP生成MVSNet数据集

一. colmap2mvsnet.py COLMAP可以给图像数据集标定一套相机外参及视图选择。如果想用COLMAP导出的结果输入MVSNet测试&#xff0c;需要把数据集&#xff08;图片、相机参数等&#xff09;转化为MVSNet的输入格式。MVSNet的作者yaoyao在Github上提供了colmap2mvsnet.py代码&…

Java内存区域

目录复制 Java内存区域区域划分内存溢出异常区域划分 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。根据《Java虚拟机规格》的规定&#xff0c;Java虚拟机所管理的内存包括以下几个运行时数据区域。 线程独占的有&#xff1a;程序计数器…

《web课程设计》 基于HTML+CSS+JavaScript实现中国水墨风的小学学校网站模板(6个网页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

[附源码]SSM计算机毕业设计网上零食商城JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Spring | 一文带你掌握IOC技术

&#x1f451; 博主简介&#xff1a;    &#x1f947; Java领域新星创作者    &#x1f947; 阿里云开发者社区专家博主、星级博主、技术博主 &#x1f91d; 交流社区&#xff1a;BoBooY&#xff08;优质编程学习笔记社区&#xff09; 文章目录IOC 控制反转1、概念2、分析…

无线传感器网络:传输层

文章目录Challenges for Transport LayerEnd-to-End MeasuresApplication-Dependent OperationEnergy ConsumptionConstrained Routing/AddressingBiased ImplementationReliable Multi-Segment Transport (RMST) ProtocolPump Slowly, Fetch Quickly (PSFQ) ProtocolPump Oper…