JavaSE:集合框架

news2024/11/25 20:17:35
  1. 为什么用集合框架

如果不知道需要多少对象,或者用较为复杂的方式存储对象,可以用集合框架

  1. 集合框架包含的内容

  1. ArrayList

实践

  • .size()

  • .add(Object o) .add(int index, Object o)

  • .get(int index)

  • .contains(Object o)

  • .remove(Object o) .remove(int index)

    public static void main(String[] args) {
        List dogs = new ArrayList();
        dogs.add(new Dog("yiyi"));  // 0
        dogs.add(new Dog("erer"));  // 1
        dogs.add(new Dog("sasa"));  // 2 -> yiyi
        dogs.add(new Dog("sisi"));
        Dog yiyi = new Dog("yiyi");
        dogs.add(2, yiyi);

        /*
        dogs.size()
        (Dog)dogs.get(i)
        上面的,再.getName()
         */
        System.out.println(dogs.size());
        for(int i = 0; i < dogs.size(); i++){
            System.out.println(((Dog)dogs.get(i)).getName());
        }
        System.out.println();

        // 。contains(Object)
        System.out.println(dogs.contains(yiyi));    // true
        System.out.println();

        // .remove()   序号或者Object
        dogs.remove(2);
        System.out.println(dogs.contains(yiyi));    // false
        System.out.println();

        for(int i = 0; i < dogs.size(); i++){
            System.out.println(((Dog)dogs.get(i)).getName());
        }
    }

源码分析

  1. ArrayList概述

数组实现, 与Vector相类似,但vector 是比较老的集合,线程安全;ArrayList是线程不安全

2.ArrayList数据结构

数组, Object类型的元素

3. 源码分析

  1. 继承和层次关系

分析:

a. 为什么ArrayList类和List接口之间,要夹一个AbstractList类?

AbstractList 是抽象类,除了List接口,还有一些通用的方法,用来抽取底层的所有通用方法先一起实现。所以说,还有其他的类又这个AbstractList类的继承。

b. 剩下的cloneable/ Serializable/ RandomAccess 接口

Random Access:快速随机存取,用for循环效率更高。否则,用iterator来迭代更好

Coloneable:可以用.clone()

Serializable:可以序列化,即从类变成字节流,从字节流变成类

  1. 属性

size/ Max_Array_Size等

  1. 构造方法和其他方法的源码

看源码,跳过

  1. LinkedList

实践

在任何位置集合的任何位置(头、中间、尾)进行添加、获取、删除狗狗对象

  • .addFirst(Object o) .addLast(Object o)

  • .getFirst() .getLast()

  • .removeFirst() .removeLast()

    public static void main(String[] args) {
        LinkedList<Object> Dogs = new LinkedList<>();
        Dog yiyi = new Dog("yiyi");
        Dog erer = new Dog("erer");
        Dog sansan = new Dog("sansan");
        Dog sisi = new Dog("sisi");

        /*
        先在头加入 erer
        再在头加入 yiyi
         */
        Dogs.addFirst(erer);
        Dogs.addFirst(yiyi);
        for(int i = 0; i < Dogs.size(); i++){
            System.out.println(((Dog)Dogs.get(i)).getName());
        }

        /*
        获取Last的Dog名字, erer
         */
        System.out.println(((Dog)Dogs.getLast()).getName());
    }

源码分析

  1. LinkList概述

双向链表,插入删除高效

AbstractSequentialList-> 可以当作堆栈、队列、双端队列进行操作

List -> 可当作队列操作

Deque -> 可当双端队列使用

Cloneable: 可克隆; Serializable:可序列化

  1. LinkList的数据结构

双向链表

  1. LinkedList特性

a. 链表、适合频繁插入、删除

b. 可以当作队列

c. 顺序存取,每次操作必须按照从开始到结束的顺序遍历;而不是像ArrayList那样,可以通过index实现随机访问

  1. 属性、构造方法等

size first last

空参构造、有参构造等

  1. HashMap

ke-map

Colection 啊、泛型啊啥的,too long no see

等碰到了再看吧

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

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

相关文章

高精度电流源如何设计出来

随着科技的不断进度&#xff0c;高精度电流源在自动测试/测量以及各种应用中承担着重要的作用。然而想要更高精度的指标参数&#xff0c;就需要电流源仪器研发得更完善。众所周知&#xff0c;高精度电流源是电子实验中重要的测试仪器&#xff0c;能够广泛应用在电化学、电光源、…

深入理解Windows操作系统机制(一)

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天我们来重新审视一下Windows这个我们熟悉的不能再熟悉的系统。我们每天都在用Windows操作系统&#xff0c;但是其实我们每天直接在打交道的并不是Windows操作系统的内核&#xff0c;而是Windows操作系统的…

pytorch入门7--自动求导和神经网络

深度学习网上自学学了10多天了&#xff0c;看了很多大神的课总是很快被劝退。终于&#xff0c;遇到了一位对小白友好的刘二大人&#xff0c;先附上链接&#xff0c;需要者自取&#xff1a;https://b23.tv/RHlDxbc。 下面是课程笔记。 一、自动求导 举例说明自动求导。 torch中的…

Python 数据库连接 + 创建库表+ 插入【内含代码实例】

人生苦短 我用python Python其他实用资料:点击此处跳转文末名片获取 数据库连接 连接数据库前&#xff0c;请先确认以下事项&#xff1a; 您已经创建了数据库 TESTDB.在TESTDB数据库中您已经创建了表 EMPLOYEEEMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。连…

前端css整理

如何水平垂直居中一个盒子&#xff1f; 1.已知高度&#xff1a;子盒子设置 display: inline-block; 父盒子设置 line-height 等于高度实现垂直居中&#xff1b;使用 text-align:center实现水平居中 2.父盒子 display:flex; align-items:center;justify-content:center; 3.定位&…

自动驾驶决策规划-控制方向学习资料总结(附相关资料的链接)

项目仓库 欢迎访问我的Github主页 项目名称说明chhCpp学习C仓库chhRobotics学习自动驾驶、控制理论相关仓库(python实现)chhRobotics_CPP学习自动驾驶、控制理论相关仓库(c实现)chhML 、chh-MachineLearning学习机器学习仓库chhRL学习强化学习仓库chhTricks存放一些有意思的t…

SpringSecurity的初次邂逅

【第一篇】SpringSecurity的初次邂逅 1.Spring Security概念 Spring Security是Spring采用 AOP思想&#xff0c;基于 servlet过滤器实现的安全框架。它提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。 Spring Security是一个功能强大且高度可定制的身…

vue权限控制和动态路由

思路 登录&#xff1a;当用户填写完账号和密码后向服务端验证是否正确&#xff0c;验证通过之后&#xff0c;服务端会返回一个token&#xff0c;拿到token之后&#xff08;我会将这个token存贮到localStore中&#xff0c;保证刷新页面后能记住用户登录状态&#xff09;&#xf…

颠覆你的认知,业务同事都能开发软件,我简直无地自容……

经常看到网络鼓吹业务人员也能搭建应用&#xff0c;本是嗤之以鼻、半信半疑&#xff0c;但当这件事真实发生在自己身上时&#xff0c;竟觉得此言不虚&#xff1f; 一、背景 最近公司为了集成系统、提升扩展能力&#xff0c;引进了低代码平台JNPF&#xff0c;说个题外话&#…

终于,OpenAI开放ChatGPT API,成本直降90%,百万token才2美元

现在&#xff0c;第三方可以通过 API 将对话模型 ChatGPT 和语音转文本模型 Whisper 集成到自己的应用程序和服务中了。 来源丨机器之心 2022 年 11 月&#xff0c;OpenAI 上线 ChatGPT&#xff0c;自此以后&#xff0c;这个对话模型一路开挂。毫不夸张的说&#xff0c;与 Ch…

4道数学题,求解极狐GitLab CI 流水线|第4题:合并列车

本文来自&#xff1a; 武让 极狐GitLab 高级解决方案架构师 &#x1f4a1; 极狐GitLab CI 依靠其一体化、轻量化、声明式、开箱即用的特性&#xff0c;在开发者群体中的使用率越来越高&#xff0c;在国内企业中仅次于 Jenkins &#xff0c;排在第二位。 极狐GitLab 流水线有 4…

NFT Insider #87:The Sandbox 收购游戏开发工作室 Sviper,GHST 大迁徙即将拉开帷幕

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members(https://twitter.com/WHALEMembers)、BeepCrypto&#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周…

洛必达求极限法则的通俗理解

洛必达求极限法则的通俗理解 洛必达法则是用于计算函数在某一点的极限的方法 它的基本思想是利用函数在该点的导数来逼近极限值。 洛必达法则成立的主要原因是因为它是利用函数的导数来逼近函数值的方法。当函数在某一点处存在导数时&#xff0c;函数的变化趋势可以由导数来…

24小时稳定性爆肝测试!国内外5款远程控制软件大盘点

本文目录前言一、ToDesk远程控制二、向日葵远程控制三、RayLink四、TeamViewer五、AnyDesk总结前言 不论你的职业是什么&#xff0c;从事互联网工作基本就离不开远程&#xff0c;从远程安装系统到远程搞设计&#xff0c;再到做服务器的调控&#xff0c;都需要靠远程来协助完成…

如何实现《电子签名法》要求的可靠电子签名?

电子文档的电子签名怎么弄&#xff1f;我们在工作中经常需要在一些Word、pdf等电子版文件中插入签名&#xff0c;而很多人可能不知道&#xff0c;电子签名怎么弄&#xff1f;怎么做电子签名才有效&#xff1f;电子印章或签名图片属于电子签名吗&#xff1f;当工作或商务交易中&…

Typroa安装教程

Markdown 是一种轻量级标记语言&#xff0c;创始人为约翰格鲁伯&#xff08;John Gruber&#xff09;。 它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的 XHTML&#xff08;或者HTML&#xff09;文档。这种语言吸收了很多在电子邮件中已有的纯文本标记…

中小型企业综合组网及安全配置(附拓扑图和具体实现的代码)

目录 一、实验目的 二、设备与环境 三、实验内容及要求 四、实验命令及结果 五、实验总结 六、实验报告和拓扑图下载链接 一、实验目的 1.了解企业网络建设流程 2.掌握组建中小企业网络的组网技术&#xff1b; 3.掌握组建中小企业网络的安全技术 二、设备与环境 微型…

Nginx国密支持问题记录

文章目录添加国密支持可能出现的问题国密不生效&#xff0c;查看 Nginx 可执行文件路径是否正确证书无法解析Nginx无法启动添加国密支持 NGINX添加国密支持 添加国密支持可以直接按照官网的操作顺序操作即可 参考网址&#xff1a;https://www.gmssl.cn/gmssl/index.jsp 可能出…

【解决】ScrollView 子 Content 在应用 Contentt Size Filter 出现位置自偏移错误问题

开发平台&#xff1a;Unity 2022 开发语言&#xff1a;CSharp 6.0   问题描述 问题表现&#xff1a; Scroll View 出现 Content 的 RectTransform 偏移值会出现自变化情况&#xff0c;但此变化情况不符合预期表现。 问题背景&#xff1a; Scroll View 添加 四周型 适配与 P…