集合的学习

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

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

数组和集合的对比:

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

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

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.mzph.cn/news/788409.shtml

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

相关文章

Flutter 开发学习笔记(3):第三方UI库的引入

文章目录 前言初始化程序Icon导入如何导入 Toast消息提示框引入简单封装简单使用 Charts图表导入新建pages文件夹存放page简单代码实现效果 总结 前言 Flutter已经发布了有10年了&#xff0c;生态也算比较完善了。用于安卓程序开发应该是非常的方便。我们这里就接入一些简单的…

golang语言系列:Web框架+路由 之 Gin

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是golang语言学习系列&#xff0c;本篇对Gin框架的基本使用方法进行学习 1.Gin框架是什么 Gin 是一个 Go (Golang) 编写的轻量级 http web 框架&#xff0c;运行速度非常快&#xff0c;如果你是性能和高效的追求者…

【JavaEE】_Spring MVC项目上传文件

目录 1. 文件上传具体实现 2. 保存文件 1. 文件上传具体实现 .java文件内容如下&#xff1a; package com.example.demo.controller;import com.example.demo.Person; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.Multip…

day4|gin的中间件和路由分组

中间件其实是一个方法&#xff0c; 在.use就可以调用中间件函数 r : gin.Default()v1 : r.Group("v1")//v1 : r.Group("v1").Use()v1.GET("test", func(c *gin.Context) {fmt.Println("get into the test")c.JSON(200, gin.H{"…

特征融合篇 | YOLOv8改进之将Neck网络更换为GFPN(附2种改进方法)

前言:Hello大家好,我是小哥谈。GFPN(Global Feature Pyramid Network)是一种用于目标检测的神经网络架构,它是在Faster R-CNN的基础上进行改进的,旨在提高目标检测的性能和效果。其核心思想是引入全局特征金字塔,通过多尺度的特征融合来提取更丰富的语义信息。具体来说,…

FPGA + 图像处理 (二) RGB转YUV色域、转灰度图及仿真

前言 具体关于色域的知识就不细说了&#xff0c;简单来讲YUV中Y通道可以理解为就是图像的灰度图&#xff0c;因此&#xff0c;将RGB转化为YUV是求彩色图的灰度直方图、进行二值化操作等的基础。 HDMI时序生成模块 这里先介绍一下仿真时用于生成HDMI时序&#xff0c;用这个时…

自贡市第一人民医院:超融合与 SKS 承载 HIS 等核心业务应用,加速国产化与云原生转型

自贡市第一人民医院始建于 1908 年&#xff0c;现已发展成为集医疗、科研、教学、预防、公共卫生应急处置为一体的三级甲等综合公立医院。医院建有“全国综合医院中医药工作示范单位”等 8 个国家级基地&#xff0c;建成高级卒中中心、胸痛中心等 6 个国家级中心。医院日门诊量…

【Docker】搭建便捷的Docker容器管理工具 - dockerCopilot

【Docker】搭建便捷的Docker容器管理工具 - dockerCopilot 前言 本教程基于绿联的NAS设备DX4600 Pro的docker功能进行搭建。前面有介绍过OneKey&#xff0c;而dockerCopilot便是OneKey的升级版&#xff0c;作者对其进行了重新命名&#xff0c;并且对界和功能都进行了全面的优…

负载均衡集群

一、集群的基本原理 集群&#xff1a;数据内容是一致的&#xff0c;集群可以被替代 分布式&#xff1a;各司其职&#xff0c;每台服务器存储自己独有的数据&#xff0c;对外作为单点被访问是访问整体的数据&#xff1b; 分布式是不能被替代的&#xff1b;分布式分为MFS、GFS、…

结构体内存对齐和位段(重点)!!!

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 点击主页&#xff1a;optimistic_chen和专栏&#xff1a;c语言&#xff0c; 创作不易&#xff0c;大佬们点赞鼓…

数据结构栈和堆列

目录 栈&#xff1a; 栈的概念&#xff1a; 栈的实现&#xff1a; 栈接口的实现&#xff1a; 1.初始化栈&#xff1a; 2.入栈&#xff1a; 3.出栈&#xff1a; 4. 获取栈顶元素&#xff1a; 5.获取栈中有效数据的个数&#xff1a; 6.检测栈是否为空&#xff0c;如果为…

Java代码示例:演示多态特性及子类方法重写(day17)

java代码里面体现多态的特点&#xff1a; 第一步创建一个父类father&#xff0c; 然后创建子类subclasses&#xff0c; 最后创建一个DemoMulti, 上面的父类特有的方法不是私有的&#xff0c;因此子类能够继承。 新建一个父类方法Father 创建子类subclasses 在下面的代码中…

LabVIEW深度学习

目录 一、配置环境1.1、显卡选择1.2、下载显卡驱动1.3、下载并安装Anaconda1.4、配置Anaconda软件包下载服务器1.5、配置虚拟环境tf_gpu1.6、安装vscode1.7、安装tensorflow1.8、下载安装Git1.9、安装TensorFlow Object Detection API框架1.10、安装依赖的python软件包1.11、配…

Python 简单使用 RabbitMQ

一、安装 pip install pika 二、推送消息到队列中 执行pythone方法 import pika import time# 用户名和密码 user_info pika.PlainCredentials(admin,admin)# 连接服务器上的rabbitMQ服务 connection pika.BlockingConnection(pika.ConnectionParameters(127.0.0.1, 5672,…

在开源的基础上构建 AI 需要一种全新的应用程序安全方法

人工智能已经从科幻小说中涌现出来&#xff0c;进入了我们的日常生活。 在开源软件&#xff08;OSS&#xff09;模型的支持下&#xff0c;人工智能革命正在加速。这些模型是专为开发 AI 而制作的复杂开源代码包&#xff0c;使组织能够高效、大规模地部署 AI 模型。 虽然大多数…

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

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

【C++第二阶段】文件操作

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 文件操作文件写入流程简单的demo写操作 文件读流程二进制写文件二进制读文件 文件操作 文件写入流程 写文件包括以下几个步骤 1.包含头文件 2.创建流对象 3.打开文件&#xff0…

大数据学习第十二天(hadoop概念)

1、服务器之间数据文件传递 1&#xff09;服务器之间传递数据&#xff0c;依赖ssh协议 2&#xff09;http协议是web网站之间的通讯协议&#xff0c;用户可已通过http网址访问到对应网站数据 3&#xff09;ssh协议是服务器之间&#xff0c;或windos和服务器之间传递的数据的协议…

IP SSL的应用与安装

IP SSL&#xff0c;即互联网协议安全套接字层&#xff0c;它是一种为网络通信提供安全及数据完整性的安全协议。在网络传输过程中&#xff0c;IP SSL可以对数据进行加密&#xff0c;这样即便数据在传输途中被截取&#xff0c;没有相应的解密密钥也无法解读内容。这一过程如同将…

合并两个单链表

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 但行前路&#xff0c;不负韶华&#…