30.0/集合/ArrayList/LinkedList

目录

30.1什么是集合?

30.1.2为什么使用集合

30.1.3自己创建一个集合类

30.1.3 集合框架有哪些?

 30.1.2使用ArrayList集合

30.2增加元素

 30.3查询的方法

30.4删除

30.5 修改

30.6泛型


30.1什么是集合?

  1. 我们之前讲过数组,数组中它也可以存放多个元素。
  2. 集合就是一个容器,里面可以存放若干个元素。

30.1.2为什么使用集合

数组的长度是固定,而且数组中数据类型必须统一。

int[] arr=new int[10];

引入了集合。可以存放。

集合它是一个类,只是该类中存在增加元素,删除元素,修改元素,统计元素的个数等方法。

30.1.3自己创建一个集合类

它也可以无限的增加元素,增加任意类型的元素。

package demo01;

import java.util.Arrays;


public class MyArray {
    //存放集合元素的
    private Object [] arr=new Object[3];
    //表示集合中元素的个数
    private int size;
    /**
     * 添加元素
     * @param o
     */
    public void add(Object o){
         //判断数组是否已满。
         if(size==arr.length){
             //扩容--并把原来数组中得元素放入新数组
            arr=Arrays.copyOf(arr,arr.length*2);
         }
         arr[size]=o;
         size++;
    }

    /**
     * 根据下标获取指定元素
     * @param index
     * @return
     */
    public Object get(int index){
        if(index<0||index>=size){
            throw new RuntimeException("给定下标越界");
        }
        return arr[index];
    }

    //获取集合的长度--元素的个数
    public int size(){
        return size;
    }
}

你都可以想到创建一个类,该类可以不断的增加元素,jdk官方一定也会想到创建一个类,可以不断的增加元素。官方会根据不同的数据结构创建不同的类。而官方提供的这些类---集合框架。

30.1.3 集合框架有哪些?

 底层也是使用数组。允许元素重复,而且根据下标获取元素,查询效率非常高。删除和添加慢。


 30.1.2使用ArrayList集合

必须创建该类的对象。

public  ArrayList(){}  默认分配数组的个数10个
public ArrayList(int size){} 人为指定数组元素的个数

30.2增加元素

public class Test02 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("java01");
        list.add("java02");
        list.add(15);
        list.add(25.6);
        list.add(true);//往集合尾部追加。

        list.add(3,"欧炜健");
        list.add(3,"赖林龙");

        System.out.println(list);


    }
}

 30.3查询的方法

package demo02;

import java.util.ArrayList;
import java.util.Objects;


public class Test {
    public static void main(String[] args) {
        ArrayList list=new ArrayList();
        list.add(new People("赖林龙",18));
        list.add(new People("胡荣纯",17));
        list.add(new People("吴韩煜",19));
        list.add(new People("赖林龙",18));

        boolean is = list.contains(new People("胡荣纯", 17));
        System.out.println(is); //equals方法比较。

        int i = list.indexOf(new People("吴韩煜", 19));
        System.out.println("第一次出现的位置:"+i);

        //求集合中元素的个数:
        int size = list.size();
        System.out.println("集合中元素的个数:"+size);

        //遍历集合
        for(int a=0;a<list.size();a++){
            Object o = list.get(a);
            System.out.println(o);
        }

        System.out.println("=================================增强循环==========================");
        for (Object o : list) {
            System.out.println(o);
        }

    }
}
class People{
    private String name;
    private int age;

    @Override
    public String toString() {
        return "People{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o){
        //this//表示调用当前方法的对象
        //重写equals
        if(this==o){
            return true;
        }
        if(! (o instanceof People)){
            return false;
        }
        People p= (People) o;
        if(p.getAge()==this.getAge()&&p.getName().equals(this.getName())){
            return true;
        }
        return false;

    }

    public People() {
    }

    public People(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;
    }
}

定义一个学生类: name,school,age

创建一个集合对象ArrayList. 里面存放5个学生。

<1>判断某个学生对象是否在集合中

<2>查看指定学生第一次在集合中出现的位置

<3>求集合中元素的个数

<4>遍历集合---使用两种方式

30.4删除

ArrayList list=new ArrayList();
        list.add(new People("赖林龙",18));
        list.add(new People("胡荣纯",17));
        list.add(new People("吴韩煜",19));
        list.add(new People("赖林龙",18));
        list.add(new People("吴韩煜",19));

        list.remove(3);//根据下标删除指定的元素
        list.remove(new People("吴韩煜",19));//根据内容移除,第一个。
        list.clear();//清空内容

        System.out.println("=================================增强循环==========================");
        for (Object o : list) {
            System.out.println(o);
        }

30.5 修改

ArrayList list=new ArrayList();
        list.add(new People("赖林龙",18));
        list.add(new People("胡荣纯",17));
        list.add(new People("吴韩煜",19));
        list.add(new People("赖林龙",18));
        list.add(new People("吴韩煜",19));

        list.set(2,new People("张学友",16));//修改指定位置上的内容
        List list1 = list.subList(1, 3); //截取集合
        System.out.println(list1);

30.6泛型

 <E>:表示泛型标识符---在创建类对象时指定数据类型,如果没有指定那么该类型为Object.

public class Test03 {
    public static void main(String[] args) {
        //规定集合中存放的数据类型。--获取元素是就是对应的类型。
        ArrayList<People> list=new ArrayList<>();
        list.add(new People("赖林龙",18));
        list.add(new People("胡荣纯",17));
        list.add(new People("吴韩煜",19));
        list.add(new People("无效五",19));
        list.add(new People("赖林龙",18));
        list.add(new People("吴志雄",18));
        list.add(new People("吴韩煜",19));
        list.add(new People("吴三桂",18));

        //找到集合中所有姓吴的
        for (People people : list) {
            boolean b = people.getName().startsWith("吴");
            if(b){
                System.out.println(people);
            }
        }
    }
}

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

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

相关文章

05_属性描述符

05_属性描述符 文章目录 05_属性描述符一、属性描述符是什么&#xff1f;二、属性描述符①&#xff1a;查看属性描述②&#xff1a;设置属性描述符③&#xff1a;案例01.代码实现02.代码实现&#xff08;优化&#xff09; 一、属性描述符是什么&#xff1f; 属性描述符的结构 在…

值得收藏的 6 个顶级 Mac 数据恢复软件榜单

对于 Mac 用户来说&#xff0c;丢失重要数据可能是一场真正的噩梦。无论是意外删除、系统崩溃还是狡猾的恶意软件&#xff0c;后果都可能是毁灭性的。幸运的是&#xff0c;Mac 数据恢复软件带来了一线希望。这些工具旨在帮助您轻松恢复珍贵的文件&#xff0c;无论是什么原因导致…

入侵redis之准备---Centos7上面部署redis

入侵redis之准备—Centos7上面部署redis 编写这个部署redis&#xff0c;只是为了另一个文章入侵redis做准备&#xff0c;网上还有好多类似的文章&#xff0c;这个单纯的就是部署安装&#xff0c;并简单的测试使用以下 关联其他文章 [1]VMware上面安装部署centos7镜像系统【详细…

knife4j集合化postman

knife4j集合化postman 01 knife4j的介绍 基于 JavaMVC的集成框架swagger的进一步强化&#xff0c;在原有通过注释就能生成文档的前身swagger-bootstrap-ui之上&#xff0c;增加了postman的测试功能&#xff0c;优化了文档的UI界面&#xff0c;在测试api接口的方面有了极大的进…

C 语言-循环嵌套-函数

C 语言 - 循环嵌套、函数 1. 循环嵌套 1.1 作用 循环 套 循环。 1.2 使用 需求1&#xff1a; 打印以下图形&#xff1a; * * * * * * * * * * * * * * * *代码&#xff1a; 1、使用循环打印 #include <stdio.h> int main(int argc, char const *argv[]) {for (int i…

Pycharm在debug问题解决方案

Pycharm在debug问题解决方案 前言一、Frames are not available二、查看变量时一直显示collecting data并显示不了任何内容 前言 Pycharm在debug时总是出现一些恼人的问题&#xff0c;以下是博主在训练中遇到的问题及在网上找到的可用解决方案&#xff1a; 一、Frames are not…

洪泽湖流域建筑物、人口密度与土地利用数据技术服务

一&#xff0e;背景介绍 人类社会发展离不开土地&#xff0c;没有土地就没有人类&#xff0c;土地利用随着人类的出现而发生。人类为了一定的社会或经济方面的目的&#xff0c;会通过利用、改造等活动。从土地上获得更多的资源。土地利用既要受自然条件的制约&#xff0c;同时也…

【密码学引论】序列密码

第五章 序列密码 1、序列密码 定义&#xff1a; 加密过程&#xff1a;把明文与密钥序列进行异或运算得到密文解密过程&#xff1a;把密文与密钥序列进行异或运算得到明文以字/字节为单位加解密密钥&#xff1a;采用一个比特流发生器随机产生二进制比特流 2、序列密码和分组密…

常用Web安全扫描工具合集

漏洞扫描是一种安全检测行为&#xff0c;更是一类重要的网络安全技术&#xff0c;它能够有效提高网络的安全性&#xff0c;而且漏洞扫描属于主动的防范措施&#xff0c;可以很好地避免黑客攻击行为&#xff0c;做到防患于未然。那么好用的漏洞扫描工具有哪些&#xff1f; 答案…

优雅使用docker-compose部署Skywalking

Skywalking使用docker-compose部署 version: 3.1 services: // 部署elasetic search 用于存储获取的应用信息与日志elasticsearch:image: elasticsearch:7.13.3container_name: elasticsearchprivileged: trueenvironment:- "cluster.nameelasticsearch" #设置集群名…

2019年10月17日: Go生态洞察:在Go 1.13中处理错误

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

2023.11.26 关于 Spring Boot 单元测试

目录 单元测试 优势 单元测试的使用 具体步骤 实现不污染数据库 阅读下面文章之前 建议点击下方链接了解 MyBatis 的创建与使用 MyBatis 的配置与使用 单元测试 单元测试 指对软件中的最小可测试单元进行检查和验证的过程单元测试 由开发人员在编码阶段完成&#xff0c;…

免费部署开源大模型 ChatGLM-6B

参考&#xff1a;【大模型-第一篇】在阿里云上部署ChatGLM3-CSDN博客 ChatGLM 是一个开源的、支持中英双语的对话语言模型&#xff0c;由智谱 AI 和清华大学 KEG 实验室联合发布&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。ChatGLM3-6B 更…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑碳排放分摊的综合能源服务商交易策略》

这篇文章的标题表明它将讨论一个关于综合能源服务商交易策略的主题&#xff0c;而在这个策略中&#xff0c;特别考虑了碳排放分摊的因素。以下是对标题中各关键词的解读&#xff1a; 综合能源服务商&#xff1a; 这指的是在能源领域提供多种服务的企业或组织&#xff0c;可能涵…

数据分析工具比较:Excel vs Python vs R

写在开头 在数据分析的世界里,选择合适的工具至关重要。本篇博客将深入比较常用的数据分析工具,包括Excel、Python和R,以帮助读者更好地选择适合自己需求的工具。 1.Excel:经典易用的电子表格 优势: 用户友好: Excel是大多数人熟悉的电子表格工具,使用简单,无需编程…

Mysql——》int(1)和 int(10)区别

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

【Qt】QStackedWidget、QRadioButton、QPushButton及布局实现程序首页自动展示功能

效果 在程序启动后&#xff0c;有时不会进入到工作页面&#xff0c;会进入到产品展示页面。 动画如下&#xff1a; 首页展示 页面操作 当不点击时&#xff0c;一秒自动刷新一次&#xff1b;当点击时&#xff0c;会自动跳转到对应页面&#xff1b;点击上一页、下一页、及跳转页…

闪亮明眸,遇见森林——四川眼科医院双语会员活动圆满结束

城市里面有什么?城市里面可以探究什么?城市里的科学又藏在什么地方呢?在孩子们的奇思妙想中&#xff0c;四川眼科医院带领屈光、视光的会员大小朋友们&#xff0c;一同开启了“闪亮明眸&#xff0c;遇见森林”的会员研学活动。活动现场&#xff0c;四川眼科医院屈光科医生张…

Spring Cloud+Nacos 注册中心详解及开发示例

目录 一、Nacos 的关键特性包括: 二、逻辑架构及其组件介绍 三、Nacos安装 1、版本选择 2、预备环境准备 3、下载源码或者安装包 4、启动服务器 5、关闭服务器 四、如何引入 Nacos Discovery Starter 五、启动一个 Provider 应用 1 pom.xml的配置。一个完整的 pom.xm…

4.3-Linux网络命名空间

查看本机的netWork namespace ip netns list 删除netWork namespace ip netns delete netnsName 创建netWork namespace ip netns add test1 查看test1这个netWork namespace的ip信息&#xff1a; ip netns exec test1 ip a 可以在虚拟机上执行&#xff1a;ip link 同样&#…