集合的学习

news2024/11/23 11:03:46

为什么要有集合:集合会自动扩容

集合不能存基本数据类型(基本数据类型是存放真实的值,而引用数据类型是存放一个地址,这个地址存放在栈区,地址所指向的内容存放在堆区)

数组和集合的对比:

集合的长度:自动伸缩,可长可短,但是只能存放引用数据类型

数组:是固定的,既可以存放基本数据类型,又可以存放引用数据类型

ArrayList集合:

泛型:限定集合中的贮存数据的类型

创建ArrayLiest的方式:ArrayList<String> List = new ArrayList<>();

前面的尖括号就是声明泛型的方式,前面的已经写了String所以后面就不需要再写String。

注意这个尖括号里面是不能存放int这种基本数据类型的,只能是存放类。

构造方法:

当为空的时候会自动创建一个空间大小为10的集合

成员方法

对于集合的操作就是增删改查。

分别提供了几种函数先对于增来说函数名字就是叫做add  这个方法的用法有点类似于前面对字符串append的用法一致

import java.util.ArrayList;

public class ArrayListd_emo1 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        //由于这个list.add的方法返回值类型是boolean类型所以我们可以不用一个变量来承接这个函数的返回值,直接用即可
        //1.这个add方法就是增方法
        list.add("abc");
        list.add("vvv");
        System.out.println(list);
        
    }

}

接下来就是删除元素

remove()

可以看到这个删除元素右两种方法,第一种就是通过元素进行删除元素,第二种就是通过下标进行删除元素

删除元素的第一种方式如果删除成功那么就会返回true 如果删除失败(当要删除的对象再集合里面不存在的时候)就会返回false

按照下标进行删除元素:如果我们使用一个String类型的字符串来接收这个要删除的字符串,这个定义的字符串就会被赋这个删除了的元素。

 然后在集合中这个字符串已经被删除了。

import java.util.ArrayList;

public class ArrayListd_emo1 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        //由于这个list.add的方法返回值类型是boolean类型所以我们可以不用一个变量来承接这个函数的返回值,直接用即可
        //1.这个add方法就是增方法
        list.add("abc");
        list.add("vvv");
        list.add("关岁安");
        list.add("guansuian1");
        System.out.println(list);
        //2.remove就是删除元素的方法

        list.remove("abc");
        System.out.println(list);

        String str =  list.remove(2);
        System.out.println(str);
        System.out.println(list);
    }

}

 

修改方法:set

使用的时候是将需要替换的元素下标卸载第一位,第二位就写想要替换在集合里面的字符串

这个方法返回的是已经被替换的字符串,我们可以使用一个字符串进行接收。

import java.util.ArrayList;

public class ArrayListd_emo1 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        //由于这个list.add的方法返回值类型是boolean类型所以我们可以不用一个变量来承接这个函数的返回值,直接用即可
        //1.这个add方法就是增方法
        list.add("zhengmeiling");
        list.add("vvv");
        list.add("关岁安");
        list.add("guansuian");
//        System.out.println(list);
//        //2.remove就是删除元素的方法
//
//        list.remove("abc");
//        System.out.println(list);
//
//        String str =  list.remove(2);
//        System.out.println(str);
//        System.out.println(list);
        //修改元素
        //会将被覆盖元素进行一个返回,使用时是下标加上想要替换的字符串
        System.out.println(list);
        String result = list.set(1,"郑美玲");
        System.out.println(result);
        System.out.println(list);
    }

}

运行结果如下:

 

第三个查询;

Get 这个常常和size()搭配使用

常常用于遍历集合

import java.util.ArrayList;

public class ArrayListd_emo1 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        //由于这个list.add的方法返回值类型是boolean类型所以我们可以不用一个变量来承接这个函数的返回值,直接用即可
        //1.这个add方法就是增方法
        list.add("zhengmeiling");
        list.add("vvv");
        list.add("关岁安");
        list.add("guansuian");
//        System.out.println(list);
//        //2.remove就是删除元素的方法
//
//        list.remove("abc");
//        System.out.println(list);
//
//        String str =  list.remove(2);
//        System.out.println(str);
//        System.out.println(list);
        //修改元素
        //会将被覆盖元素进行一个返回,使用时是下标加上想要替换的字符串
        System.out.println(list);
        String result = list.set(1,"郑美玲");
        System.out.println(result);
        System.out.println(list);
        System.out.println();
        for (int i = 0; i < list.size(); i++) {
            String str = list.get(i);
            System.out.println(str);
        }
    }

}

运行结果

我们使用StringJoiner和这个集合操作进行拼接:

import java.util.ArrayList;
import java.util.StringJoiner;

public class ArrayListd_emo1 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("活");
        list.add("在");
        list.add("当");
        list.add("下");
        StringJoiner sj = new StringJoiner(", ","[","]");
        for (int i = 0; i < list.size(); i++) {
            sj.add(list.get(i));
        }
        System.out.println(sj);
    }
}

我们首先创建一个集合然后使用集合添加这个,这个主要是为了获取集合中的元素,然后通过标准输出

为了能在集合中存贮基本数据类型我们需要基本数据类型转化为包装类。

 

练习:将一个含有数字的集合输出
需要用到我们的Integer类型来进行输出

import java.util.ArrayList;
import java.util.StringJoiner;

public class ArrayListd_emo1 {
    public static void main(String[] args) {
        //创建集合
        ArrayList<Integer> list = new ArrayList<>();
        //添加元素
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.print("[");
        for (int i = 0; i < list.size(); i++) {
            if(i == list.size() - 1){
                System.out.print(list.get(i));
            }else{
                System.out.print(list.get(i) + ", ");
            }
        }
        System.out.println("]");
    }
}

我们想通过循环来输入对象,这其实是不对的,因为集合的长度是可以变的,所以我们不能使用list.size()来遍历这个数组。

学生身份记录程序:

我犯下的错误:需要将这个创建学生对象放在循环里面不然的话,就看下面这一张图片

 如果放在循环里面的话:

 

 这个是Student的类

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;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}

这个含主函数的主类

import com.sun.xml.internal.ws.addressing.WsaTubeHelper;

import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringJoiner;

public class ArrayListd_emo1 {
    public static void main(String[] args) {
       ArrayList<Student> list=new ArrayList<>();
        Scanner sc = new Scanner(System.in);

       for(int i = 0;i<3;i++){
           Student s = new Student();
           System.out.println("请输入名字");
           String name = sc.next();
           System.out.println("请输入年龄");
           int age = sc.nextInt();
           s.setName(name);
           s.setAge(age);
           list.add(s);
       }
       for(int i = 0;i<3;i++){
           Student stu = list.get(i);
           System.out.println(stu.getName() + "   "  + stu.getAge());
       }
    }
}

小技巧:当我们在创建对象的时候,,我们使用构造器的时候不记得应该填入变量的顺序的·时候我们可以点击小括号,然后点击ctrl + p就可以看应该填入变量的顺序了

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

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

相关文章

什么是js、ajax

1.什么是js JavaScript&#xff08;简称 JS&#xff09;是一种轻量级、解释型的编程语言&#xff0c;通常用于在 Web 页面上添加交互性、动态性和动画效果。它是世界上最流行的编程语言之一&#xff0c;也是唯一一种可以在 Web 浏览器中运行的编程语言。 2.什么是AJAX ajax…

华为审核被拒提示: 您的应用存在(最近任务列表隐藏风险活动)的行为,不符合华为应用市场审核标准

应用审核意见&#xff1a; 您的应用存在&#xff08;最近任务列表隐藏风险活动&#xff09;的行为&#xff0c;不符合华为应用市场审核标准。 修改建议&#xff1a;请参考测试结果进行修改。 请参考《审核指南》第2.19相关审核要求&#xff1a;https://developer.huawei.com/c…

算法整理:二分查找

1二分查找&#xff1a;在有序集合搜索特定值的过程&#xff0c;每次比较之后将查找空间一分为二。 target:要查找的值 index:当前位置 left,right:维持查找空间的指标 mid:用来确定向左查还是向右查的索引 查找空间: [left,right] 二分查找维护left&#xff0c;right&#xff0…

ElementUI 表格横向滚动条时滚动到指定位置

ElementUI 表格横向滚动条时滚动到指定位置 getColumnOffset(columnProp) {this.$nextTick(() > {const table this.$refs.tableRef.$refs.multipleTable;const columns table.columns;const column columns.find((col) > col.property columnProp);if (column) {// …

Transformer模型-softmax的简明介绍

今天介绍transformer模型的softmax softmax的定义和目的&#xff1a; softmax&#xff1a;常用于神经网络的输出层&#xff0c;以将原始的输出值转化为概率分布&#xff0c;从而使得每个类别的概率值在0到1之间&#xff0c;并且所有类别的概率之和为1。这使得Softmax函数特别适…

rabbitmq死信交换机,死信队列使用

背景 对于核心业务需要保证消息必须正常消费&#xff0c;就必须考虑消费失败的场景&#xff0c;rabbitmq提供了以下三种消费失败处理机制 直接reject&#xff0c;丢弃消息&#xff08;默认&#xff09;返回nack&#xff0c;消息重新入队列将失败消息投递到指定的交换机 对于核…

SpringBoot | Spring Boot“整合Redis“

目录: 1. Redis 介绍2. Redis 下载安装3. Redis “服务开启”和“连接配置”4. Spring Boot整合Redis的“前期准备” :① 编写实体类② 编写Repository 接口③ 在“全局配置文件”中添加 “Redis数据库” 的 “相关配置信息” 5. Spring Boot整合“Redis” (案例展示) 作者简介…

【蓝桥杯嵌入式】13届程序题刷题记录及反思

一、题目分析 考察内容&#xff1a; led按键&#xff08;短按&#xff09;PWM输出&#xff08;PA1&#xff09;串口接收lcd显示 根据PWM输出占空比调节&#xff0c;高频与低频切换 串口接收&#xff08;指令解析&#xff09;【中断接收】 2个显示界面 led灯闪烁定时器 二…

Centos8/linux/虚拟机安装docker

docker分为ce版和ee版&#xff0c;像一般的小型团体和个人使用ce版就够了&#xff0c;别问为什么&#xff0c;问就是ee版收费。 1.首先切换到root用户 2.为确保安装时出现不必要的问题&#xff0c;先更新一下yum包 sudo yum update 3.如果之前安装过需要删除之间安装的CE版…

Flutter应用混淆技术原理与实践

在移动应用开发中&#xff0c;保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具&#xff0c;帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆&#xff0c;并提供了相关的操作步骤和注意事项。 &#x1f4dd; 摘要 本…

基于深度学习的车牌检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;本文深入研究了基于YOLOv8/v7/v6/v5的车牌检测系统&#xff0c;核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;进行性能指标对比&#xff1b;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码&#xff0c;及基于Streamlit的交…

StreamingT2V文本生成视频多模态大模型,即将开源!

1、前言 Picsart人工智能研究所、德克萨斯大学和SHI实验室的研究人员联合推出了StreamingT2V视频模型。通过文本就能直接生成2分钟、1分钟等不同时间&#xff0c;动作一致、连贯、没有卡顿的高质量视频。 虽然StreamingT2V在视频质量、多元化等还无法与Sora媲美&#xff0c;但…

【zlm】音视频流与音频流合并的设计

目录 设想一 设想二 方案三 关键技术 测试语句 测试脚本 参考文档 设想一 //开始录制_option.mp4_save_path custom_path;_option.mp4_max_second max_second;vector<Track::Ptr> mytracks getTracks();auto src MediaSource::find( DEFAULT_VHOST, "1&quo…

基于单片机32X32LED汉字滚动点阵屏显示设计

**单片机设计介绍&#xff0c;基于单片机32X32LED汉字滚动点阵屏显示设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机32X32LED汉字滚动点阵屏显示设计是一个融合了硬件、软件以及电子显示技术的综合性项目。以下是对该设计的…

ES8 学习 -- async 和 await / 对象方法扩展 / 字符串填充

文章目录 1. async 和 await1.1 基本语法1.2 使用示例1.3 案例练习 2. 对象方法扩展2.1 Object.values(obj)2.2 Object.entries(obj)2.3 Object.getOwnPropertyDescriptors(obj)使用示例 3. 字符串填充4. 函数参数的末尾加逗号 1. async 和 await async 函数&#xff0c;使得异…

【嵌入式硬件】光耦

1.光耦作用 光耦一般用于信号的隔离。当两个电路的电源参考点不相关时,使用光耦可以保证在两边不共地的情况下,完成信号的传输。 2.光耦原理 光耦的原理图如下所示,其内部可以看做一个特殊的“三极管”; 一般的三极管是通过基极B和发射极E间的电流,去控制集电极C和发射极…

图像处理与视觉感知---期末复习重点(6)

文章目录 一、图像分割二、间断检测2.1 概述2.2 点检测2.3 线检测2.4 边缘检测 三、边缘连接3.1 概述3.2 Hough变换3.3 例子3.4 Hough变换的具体步骤3.5 Hough变换的法线表示形式3.6 Hough变换的扩展 四、阈值处理4.1 概述4.2 计算基本全局阈值算法4.3 自适应阈值 五、基于区域…

视频汇聚/安防监控/EasyCVR平台播放器EasyPlayer更新:新增【性能面板】

视频汇聚/安防监控/视频存储平台EasyCVR基于云边端架构&#xff0c;可以在复杂的网络环境中快速、灵活部署&#xff0c;平台视频能力丰富&#xff0c;可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云…

128Days

今天是我踏上创作之路的第128天&#xff0c;回首过去的这些日子&#xff0c;心中充满了感慨和喜悦。我想&#xff0c;每一个热爱创作的人&#xff0c;都会珍惜自己走过的每一天&#xff0c;因为每一天都充满了新的灵感和挑战。 从最初的懵懂无知&#xff0c;到现在对创作的热情…

CTF wed安全 (攻防世界)练习题

一、disabled_button 步骤一&#xff1a;进入网站发现按钮按不了 步骤二&#xff1a;按F12会查看源代码&#xff0c;会发现disabled disable属性 在HTML中&#xff0c; disabled 属性只有两个值&#xff1a;一个是不带值&#xff08;例如&#xff1a;disabled&#xff09;&…