Java---Collection讲解(一)

news2024/11/18 15:40:52

文章目录

    • 1. 集合体系结构
    • 2. Collection集合概述和使用
    • 3. Collection集合的遍历
    • 4. 小案例分析
    • 5. List集合概述和特点
    • 6. List集合的特有方法
    • 7. 小案例分析


1. 集合体系结构

 集合体系结构如下所示。在实现时我们需要使用接口的具体实现类。

在这里插入图片描述

2. Collection集合概述和使用

 1. Collection集合概述:(1) 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素。 (2) JDK不提供此接口的任何直接实现,它提供更具体的子接口Set和List实现。

 2. 创建Collection集合的对象:(1) 多态的方式。 (2) 具体的实现类ArrayList。

 3. Collection集合常用方法:

方法名说明
boolean add(E e)添加元素
boolean remove(Object o)从集合中移除指定元素
void clean()清空集合元素
boolean contains(Object o)判断集合中是否存在指定元素
boolean isEmpty()判断集合是否为空
int size()集合的长度,也就是集合中元素的个数
import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo {
    public static void main(String[] args) {
        Collection<String> c=new ArrayList<String >();
        c.add("hello");
        c.add("Java");
        c.add("难学");
        System.out.println(c);//[hello, Java, 难学]

        System.out.println(c.size());//3

        c.remove("hello");
        System.out.println(c);//[Java, 难学]

        System.out.println(c.contains("难学"));//true

        c.clear();
        System.out.println(c);//[]

        System.out.println(c.isEmpty());//true

    }
}

3. Collection集合的遍历

 1. Iterator:迭代器,集合的专用遍历方式。迭代器是通过集合的iterator()方法得到的,所以说它是依赖与集合而存在的。

 2.其中的常用方法:(1) E next():返回迭代中的下一个元素。(2) boolean hasNet():如果迭代具有更多元素,则返回True。

 3. 代码块举例:

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

public class CollectionDemo {
    public static void main(String[] args) {
        Collection<String> c=new ArrayList<String >();
        c.add("hello");
        c.add("Java");
        c.add("难学");
        Iterator<String> it=c.iterator();
        System.out.println(it.next()); //hello
        System.out.println(it.next()); //Java
        System.out.println(it.next()); //难学
        //System.out.println(it.next()); 会报错

        if(it.hasNext()){  //会判断有没有元素,没有就不执行
            System.out.println(it.next());//没有返回
        }
    }
}

4. 小案例分析

在这里插入图片描述

public class Student {
    private String name;
    private int age;
    public Student(){}
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

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

public class Demo {
    public static void main(String[] args) {
        Collection<Student> c=new ArrayList<Student>();
        Student s1=new Student("张三",18);
        Student s2=new Student("李四",19);
        Student s3=new Student("王五",20);
        c.add(s1);
        c.add(s2);
        c.add(s3);
        Iterator<Student> it=c.iterator();
        while(it.hasNext()){
            Student s=it.next();
            System.out.println(s.getName()+" 年龄为:"+s.getAge());
            //张三 年龄为:18
            //李四 年龄为:19
            //王五 年龄为:20
        }
    }
}

5. List集合概述和特点

 1. List集合概述:(1) 有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素。 (2) 与Set集合不同,列表通常允许重复的元素。

 2. List集合特点:(1)有序:存储和取出的元素顺序一致。 (2) 可重复:存储的元素可以重复。

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

public class Demo {
    public static void main(String[] args) {
        List<String> c=new ArrayList<String>();
        c.add("s1");
        c.add("s2");
        c.add("s3");
        c.add("s3");
        Iterator<String> it=c.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
            //s1
            //s2
            //s3
            //s3
        }
    }
}

6. 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 Demo {
    public static void main(String[] args) {
        List<String> c=new ArrayList<String>();
        c.add("s1");
        c.add("s2");
        c.add("s3");
        c.add("s3");
        Iterator<String> it=c.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
            //s1
            //s2
            //s3
            //s3
        }
        c.add(1,"插入");
        System.out.println(c);//输出:[s1, 插入, s2, s3, s3]
        System.out.println(c.remove(1));//输出:插入
        System.out.println(c);//输出:[s1, s2, s3, s3]
        System.out.println(c.set(1,"s22"));//输出:s2
        System.out.println(c);//输出:[s1, s22, s3, s3]
        System.out.println(c.get(3));//输出:s3
    }
}

7. 小案例分析

在这里插入图片描述

package BliJava;

public class Student {
    private String name;
    private int age;
    public Student(){}
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}


import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
public class Demo {
    public static void main(String[] args) {
        List<Student> list=new ArrayList<Student>();
        Student s1=new Student("张三",18);
        Student s2=new Student("李四",19);
        Student s3=new Student("王五",20);
        list.add(s1);
        list.add(s2);
        list.add(s3);

        //第一种迭代方式
        Iterator<Student> it=list.iterator();
        while(it.hasNext()){
            Student s=it.next();
            System.out.println(s.getName()+" "+s.getAge());
        }

        //第二种迭代方式
        for(int i=0;i<list.size();i++){
            Student s=list.get(i);
            System.out.println(s.getName()+" "+s.getAge());
        }
        //张三 18
        //李四 19
        //王五 20
        //张三 18
        //李四 19
        //王五 20
    }
}

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

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

相关文章

MySQL数据库 入门

目录 一、MySQL概述 二、MySQL安装 安装数据库 配置数据库 启动停止数据库 客户端连接数据库 三、数据模型 四、SQL 一、MySQL概述 先来讲解三个概念&#xff1a;数据库、数据库管理系统、 SQL 。 而目前主流的关系型数据库管理系统的市场占有率排名如下&#xff1a; …

【jitterbuffer】3:VCMJitterEstimator及所需的概率知识:期望、方差、协方差

期望 : 全国的平均积雪深度 期望值为负 概率就是 不同国家的面积了,总面积是1 期望计算公式 某种函数的期望 K的求和范围 计算期望 1

windows任意APP注册成服务(以nginx服务为例)

前言 最近需要部署一个前端项目&#xff0c;用到了nginx。正常情况是&#xff1a;需要使用时nginx服务时&#xff0c;进入到nginx.exe所在目录&#xff0c;然后执行&#xff1a;start nginx.exe&#xff0c;但是线上环境这样搞的话还是不太科学。由于好奇心&#xff08;懒&…

解读unity内置的软阴影处理方式

解读unity内置的软阴影处理方式&#xff1a; 参考网址&#xff1a; https://blog.csdn.net/cgy56191948/article/details/105726682 https://blog.csdn.net/weixin_45776473/article/details/119582218 https://tajourney.games/5482/ 上面的博客已经论述了&#xff0c;为何出现…

猫头虎博主深度解析:Tomcat中的`IllegalArgumentException`异常处理全攻略 ️

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Etsy运营秘籍——打造大卖店铺的九大技巧

在跨境电商的浩瀚海洋中&#xff0c;Etsy 作为一个注重手工制作与独特设计的平台&#xff0c;吸引了众多卖家的关注。在 Etsy 的世界里&#xff0c;成功运营小店需要更多的智慧和技巧。作为一位在 Etsy 上开店多年的老手&#xff0c;在这过程中也总结了不少经验&#xff0c;这篇…

微服务组件Sentinel的学习(2)

限流规则 流控模式直接模式关联模式链路模式 流控效果快速失败warm up排队等待 热点参数限流 流控模式 添加限流规则&#xff0c;可点击高级选项&#xff0c;有三种流控模式选择&#xff1a; 直接:统计当前资源的请求&#xff0c;触发闻值时对当前资源直接限流&#xff0c;也是…

LeetCode力扣每日一题(Java):69、x 的平方根

一、题目 二、解题思路 1、 我的思路 我的思路是直接循环暴力破解&#xff0c;定义计数器i&#xff0c;从1开始递增&#xff0c;直到i*i大于或等于x 于是有了如下代码 int i 1;while(true){if(i*i<x){i;}else if(i*ix){return i;}else{return i-1;}} 但提交之后超出了…

开启虚拟世界的新篇章

近年来&#xff0c;随着科技的迅猛发展&#xff0c;人们生活方式的改变也日益显著。而其中一个最引人注目的变化便是数字人直播的兴起。数字人直播以其独特的魅力&#xff0c;成为了当今社会中备受关注的热门话题。本文将从数字人直播的定义、应用领域以及未来发展等方面&#…

状态的一致性和FlinkSQL

状态一致性 一致性其实就是结果的正确性。精确一次是指数据有可能被处理多次&#xff0c;但是结果只有一个。 三个级别&#xff1a; 最多一次&#xff1a;1次或0次&#xff0c;有可能丢数据至少一次&#xff1a;1次或n次&#xff0c;出错可能会重试 输入端只要可以做到数据重…

怎么选择合适的3ds Max云渲染农场?

3ds Max 用户日常面临的一个共同挑战便是漫长的渲染周期。作为一个强大的三维建模和渲染软件&#xff0c;3ds Max 势必需处理大量的光照、材质和阴影计算任务&#xff0c;因此&#xff0c;良好的渲染方案对从业者而言尤为重口。 一、为何考虑3ds Max云渲染? 云渲染成为了解决…

mysql中DML数据操作的增 修 删

现有如下的表 DML 数据操作 增(四种方法) 修 删 -- 增 INSERT INTO student (NAME,birthday,phone,height,reg_time)VALUES(詹姆斯,1985-2-3,15222233,1.98,NOW()) INSERT INTO student SET NAME科比 ,birthday19863,phone15622333 -- 插入多个 INSERT INTO student (NAME…

使用C++11开发一个半同步半异步线程池

半同步半异步线程池介绍 在处理大量并发任务的时候&#xff0c;如果按照传统的方式&#xff0c;一个请求一个线程来处理请求任务&#xff0c;大量的线程创建和销毁将消耗过多的系统资源&#xff0c;还增加了线程上下文切换的开销&#xff0c;而通过线程池技术就可以很好的解决这…

命令执行 [BUUCTF 2018]Online Tool1

打开题目 我们代码审计一下 if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) { $_SERVER[REMOTE_ADDR] $_SERVER[HTTP_X_FORWARDED_FOR]; } 如果存在xxf头且不为空&#xff0c;则将xxf头内容&#xff08;真实的客户端ip&#xff09;赋给ROMOTE_ADDR&#xff08;代理服务器传过…

[pluginviteimport-analysis] vite 提示jsx语法报错

参考文章 https://segmentfault.com/q/1010000043499356https://blog.csdn.net/kkkkkkgg/article/details/131168224 报错内容 内容类似如下&#xff1a; 03:16:26 [vite] Internal server error: Failed to parse source for import analysis because the content contains…

上海亚商投顾:沪指收复3000点,房地产板块集体走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日窄幅震荡&#xff0c;创业板指走势较弱&#xff0c;科创50指数跌近1%。房地产板块集体走强&#xff0…

Linux服务器开发太麻烦? 试试IntelliJ IDEA公网远程访问开发极大提升开发效率

文章目录 1. 检查Linux SSH服务2. 本地连接测试3. Linux 安装Cpolar4. 创建远程连接公网地址5. 公网远程连接测试6. 固定连接公网地址7. 固定地址连接测试 本文主要介绍如何在IDEA中设置远程连接服务器开发环境&#xff0c;并结合Cpolar内网穿透工具实现无公网远程连接&#xf…

C语言刷题数组------数组交换

输入一个长度为 10的整数数组 X[10]&#xff0c;将里面的非正整数全部替换为 1&#xff0c;输出替换完成后的数组。 输入格式 输入包含 10个整数&#xff0c;每个整数占一行。输出格式 输出新数组中的所有元素&#xff0c;每个元素占一行。输出格式为 X[i] x&#xff0c;其中…

spring面试:二、bean的生命周期和循环引入问题(三级缓存、@Lazy)

bean的生命周期 Spring容器在进行实例化时&#xff0c;会将xml配置的的信息封装成一个BeanDefinition对象&#xff0c;Spring根据BeanDefinition来创建Bean对象&#xff0c;里面有很多的属性用来描述Bean。 其中比较重要的是&#xff1a; beanClassName&#xff1a;bean 的类…

焊盘:十字连接VS全覆盖 铺铜

在铺铜规则中&#xff0c;焊盘连接方式有两种&#xff1a; 十字连接 优点&#xff1a;较好焊接&#xff1a;因铺铜面积减少&#xff0c;温度下降速度降低&#xff0c;较好焊接&#xff0c;不易虚焊。 缺点&#xff1a;载流能力较弱&#xff1a;铺铜面积↓ → 载流能力↓全连接…