集合的学习

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

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

数组和集合的对比:

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

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

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就可以看应该填入变量的顺序了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

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,…

python核心篇之网络通信

一. 发送请求 1. 发送get请求 2. 发送post请求 3. json数据与python数据的对应关系

隐私计算实训营第七讲-隐语SCQL的架构详细拆解

隐私计算实训营第七讲-隐语SCQL的架构详细拆解 文章目录 隐私计算实训营第七讲-隐语SCQL的架构详细拆解1.SCQL Overview1.1 多方数据分析场景1.2 多方数据分析技术路线1.2.1 TEE SQL方案1.2.2 MPC SQL方案 1.3 Secure Collaborative Query Language(SCQL)1.3.1 SCQL 系统组件1.…

css3之2D转换transform

2D转换transform 一.移动&#xff08;translate)(中间用&#xff0c;隔开&#xff09;二.旋转&#xff08;rotate)&#xff08;有单位deg)1.概念2.注意点3.转换中心点&#xff08;transform-origin)&#xff08;中间用空格&#xff09;4.一些例子(css三角和旋转&#xff09; 三…

SVM简介 详细推导 核函数 线性可分 非线性可分

注意&#xff1a;由于该文章由jupyter nbconvert导出&#xff0c;若单独执行代码可能出现变量找不到或者没有导入库的情况&#xff0c;正确的做法是将所有的代码片段按顺序放到一个.py文件里面或者按顺序放入一个.ipynb文件的多个代码块中。 SVM(Support Vector Machine) Vap…

第十五届蓝桥杯模拟考试I_物联网设计

反思&#xff1a; 本次模拟让我惊醒&#xff0c;写这个作品如同搭积木&#xff0c;在拼接的时候都要仔细检查这个积木是否出bug,确保没有问题再将其拼接到之前搭好的大模块之中&#xff0c;因为就是这样的题目我在处理过程中就遇到了BUG&#xff0c;原因竟出在输入模式要上拉&…

鸿蒙OS元服务开发:【(Stage模型)设置应用主窗口】

一、设置应用主窗口说明 在Stage模型下&#xff0c;应用主窗口由UIAbility创建并维护生命周期。在UIAbility的onWindowStageCreate回调中&#xff0c;通过WindowStage获取应用主窗口&#xff0c;即可对其进行属性设置等操作。还可以在应用配置文件中设置应用主窗口的属性&…

MegaSeg Pro for Mac v6.3.1 注册激活版 音视频DJ混音工具

MegaSeg Pro for Mac是一款专业的DJ和广播自动化软件&#xff0c;旨在为音乐专业人士提供强大的音乐播放和演播功能。这款软件具有多种功能&#xff0c;包括强大的音乐库管理&#xff0c;支持导入和组织大量音乐文件&#xff0c;可以轻松管理你的音乐收藏。它支持广泛的音频格式…

idea快速找到maven中冲突的依赖,解决依赖冲突

红色实线&#xff1a;冲突&#xff0c;红色虚线&#xff1a;依赖于同一个包的多版本 选择包&#xff0c;右键Excluede&#xff0c;排除 问题原因: 一个项目中需要jar包A和jar包B,而jar包A和jar包B都需要依赖jar包C,但A需要1.2.16版本的C,B需要1.2.17版本的C,这时候就可能会产…

vs2022断点找bug出错(打上100个断点)

初步分析&#xff1a;故障出自-具体功能模块 进一步分析&#xff1a;故障出自-该功能代码流程 进一步分析&#xff1a;从该功能起点-终点&#xff0c;一路打100个断点

电商技术揭秘五:电商平台的个性化营销与数据分析

文章目录 引言1. 个性化营销的概念与价值1.1 个性化营销的定义1.1.1 个性化营销的基本概念1.1.2 个性化营销在电商领域的重要性 1.2 个性化营销的核心价值1.2.1 提升用户体验1.2.2 增加转化率和客户忠诚度1.2.3 优化营销资源配置 2. 用户画像与行为分析2.1 用户画像的构建2.1.1…

【Linux】在生产环境中,Linux系统排查常用命令

问题排查 文章目录 问题排查top命令CPU&#xff1a;vmstatprocscpu内存&#xff1a;free硬盘&#xff1a;df硬盘IO&#xff1a;iostat网络IO&#xff1a;ifstat 生产环境服务器变慢&#xff0c;诊断思路和性能评估 top命令 查看整机系统新能 使用top命令的话&#xff0c;重点…

如何处理Flutter应用在iOS平台上的兼容性问题

本文探讨了使用Flutter开发的iOS应用能否上架&#xff0c;以及上架的具体流程。苹果提供了App Store作为正式上架渠道&#xff0c;同时也有TestFlight供开发者进行内测。合规并通过审核后&#xff0c;Flutter应用可以顺利上架。但上架过程可能存在一些挑战&#xff0c;因此可能…

使用TCP协议就一定零丢包了吗?

简述数据包发送流程 为了简化模型&#xff0c;我们把中间的服务器给省略掉&#xff0c;假设这是个端到端的通信。且为了保证消息的可靠性&#xff0c;它们之间用的是TCP协议进行通信。 为了发送数据包&#xff0c;两端首先会通过三次握手&#xff0c;建立TCP连接。 一个数据包&…

django-haystack,具有全文搜索功能的 Python 库!

目录 前言 安装与配置 全文搜索基础 搜索引擎配置 索引配置 搜索视图与模板 过滤器与排序 自定义搜索逻辑 应用场景 1. 电子商务网站的商品搜索 2. 新闻网站的文章搜索 3. 社交网站的用户搜索 4.企业内部系统的文档搜索 总结 前言 大家好&#xff0c;今天为大家分享…

零基础入门多媒体音频(7)-AAOS audio

概览 Android Automotive OS (AAOS) 是基于核心的 Android 音频堆栈打造&#xff0c;以支持用作车辆信息娱乐系统。AAOS 负责实现信息娱乐声音&#xff08;即媒体、导航和通讯&#xff09;&#xff0c;但不直接负责具有严格可用性和时间要求的铃声和警告。 虽然 AAOS 提供了信号…

python爬虫+django新闻推荐系统可视化分析

1. 安装python3.7.0 2. 更新pip 控制台执行 python -m pip install -U pip 3. 安装依赖库 pip install -r requirements.txt 4. 更改mysql数据库配置 修改newsServer/settings.py中的数据库连接配置&#xff0c;比如修改下方PASSWORD密码为本机mysql密码&#xff1…

GPT 模型解析:ChatGPT 如何在语言处理领域引领潮流?

人工智能时代来临 我们正处于AI的iPhone时刻。——黄仁勋&#xff08;英伟达CEO&#xff09; ChatGPT 好得有点可怕了&#xff0c;我们距离危险的强人工智能不远了。——马斯克&#xff08;Tesla/SpaceX/Twitter CEO&#xff09; 以上的内容说明我们现在正处于一个技术大翻牌的…

Git分支提交时自动大写 fatal: the remote end hung up unexpectedly

先说结论&#xff1a; 进入 .git/refs/heads目录&#xff0c;会看到Feature文件夹&#xff0c;重命名为feature即可。 表现&#xff1a; 通过终端命令创建的分支 git checkout -b feature/name 使用git push后自动变成了Feature/name 并且有时候在本地创建feature/1234567…

视频基础学习四——视频编码基础一(冗余信息)

文章目录 前言一、编码压缩的原理1.空间冗余帧内预测 2.时间冗余帧间预测运动估计运动补偿 3.编码冗余4.视觉冗余 二、压缩编码的流程1.编码器2.编解码流程 总结 前言 上一篇文章介绍了视频帧率、码率、与分辨率。也介绍了为什么需要对视频进行压缩&#xff0c;因为720P、rgb2…