多态,匿名内部类(lambda表达式),集合

news2024/9/21 4:38:24

多态(polymorphism)

一个演员扮演多个不同角色。可以减少if语句的使用。

概念在这里插入图片描述

具有接口或者继承关系

A extends B

A implement C

类型一致(IEat)

民间说法:父类的引用指向不同的子类对象(不同时刻)

在这里插入图片描述

产生不同结果

调用相同方法,产生不同结果。——方法重写(覆盖)

在这里插入图片描述

tips:ASAP–类似中文的“哈哈,呵呵”

匿名内部类

概念:没有类名,也不是单独文件

在这里插入图片描述
在这里插入图片描述
慎用 实际工作中用多了可能造成“屎山代码”

Fruit类

sort()给水果价格排序

在这里插入图片描述

Replace with lambda在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

大功告成

前后对比

在这里插入图片描述

lambda表达式

------>可以简化函数(方法)的写法

只有一个方法时

在这里插入图片描述
在这里插入图片描述

灰色表示可以简写/可省略

在这里插入图片描述

再写一个方法drink()在接口

此时就用匿名内部类了(接口不用写实现)

力扣:4. 寻找两个正序数组的中位数

在这里插入图片描述
在这里插入图片描述


简单法在这里插入图片描述

优化下在这里插入图片描述

击败100%在这里插入图片描述

高手刷题建议:不要加sout

在这里插入图片描述

集合法:不是很快

在这里插入图片描述

集合

两个中心:
在这里插入图片描述

框架

帮助类xxxS:Collections,Arrays。。。
在这里插入图片描述

有啥用

  • 对多个数据的操作数据结构。

数组缺点

  • 指定位置增加困难,删除困难。------ LinkList(链表)
  • 数组长度固定

和数组有关的集合

将数组包装为一个高级的数据结构 CRUD

List

<泛型>

  • 只能放对象,int不行得要包装类Integer

在这里插入图片描述
不写<>----没有限定在这里插入图片描述
加上方便取,why规定了类型

在这里插入图片描述

实现类

在这里插入图片描述

ArrayList古老的数组,但还是数组,

只不过你看不出来这个别人帮你包装好的数组

API

先写main

在这里插入图片描述

所有方法:

默认长度:10

在这里插入图片描述

grow扩容

本质:创建一个新数组,数组容量在原数组的基础上增加>>1(一半)

即:扩容1.5倍

在这里插入图片描述

何时扩容

10–>15

在这里插入图片描述

快满的时候扩容:size+1>10
在这里插入图片描述

数组过于频繁,效率降低

在这里插入图片描述

Api方法介绍

add()

数组尾部添加 ——list.add(e);

package com.ffyc.collection.ListDemo;

import java.util.ArrayList;
import java.util.List;

public class LinkDemo02 {
    public static void main(String[] args) {
        List<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(2);

        List<Integer> list2 = new ArrayList<>();
        list2.add(3);
        list2.add(4);

        list1.addAll(list2);
        System.out.println(list1);
    }
}

在这里插入图片描述

addAll()

在这里插入图片描述
在这里插入图片描述

remove(index)
for(int i = 0;i<list1.length;i++){
list1.remove(i);
i--;
}
删除所有方法:迭代器——安全(遍历)
  //删除all数据:迭代器删法:安全
        Iterator<Integer> it = list1.iterator();
        while (it.hasNext()){//外面的来删,看有没有下一个
            if(it.next() != null){
            it.remove();
            }
            
        }

高阶:

在这里插入图片描述

11

在这里插入图片描述

get(index)

在这里插入图片描述

set(index,值)

在这里插入图片描述

Collections

.sort()
max
api
任务:随机放入10个数(1~20),要求数字不重复,使用迭代器list.forEach()

在这里插入图片描述

集合关系图

在这里插入图片描述

LinkedList

对比

在这里插入图片描述

数据结构与算法

在这里插入图片描述

在这里插入图片描述

线性

在这里插入图片描述

代表:数组,链表

非线性
编号操作动态数组ArrayList链表LinkedList
1添加
2删除
3查询
4修改
Vector向量——检测线程安全

底层数组 ArrayList(1.5),Vector(2*old)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

sy:同步

List的三大实现类

在这里插入图片描述

Link集合存储自定义对象

Dog类

name ,brand, price ,weight

list

在这里插入图片描述

找对象,记得重写equals

在这里插入图片描述

index找到对象/字符存在的位置。

删除
  1. iteaa’r for循环 回减一个
  2. 在这里插入图片描述
排序

在这里插入图片描述

Camparator类,匿名内部类

在这里插入图片描述
在这里插入图片描述

Set——存储的数据是唯一的,不允许重复。

底层数据结构:Map

Api

在这里插入图片描述

一个子接口

如何遍历

在这里插入图片描述

27.344任务Set做法

package com.ffyc.collection.Set;

import java.util.*;

public class SetDemo {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        Random random = new Random(System.currentTimeMillis());
        Random random1 = new Random(new Date().getTime());

        while (set.size()<10){//生成10个随机数
            set.add(random1.nextInt(20)+1);
        }
        System.out.println(set);

        set.remove(6);//删对象
        System.out.println(set);

        //查询
        for (int tmp : set){
            System.out.println(tmp);
        }
        System.out.println("-------forEach-----");
        set.forEach(t-> System.out.println(t));
        System.out.println("-----iterator-------");
        Iterator<Integer> it = set.iterator();
        System.out.println(set);
//        set.stream().sorted();
//        System.out.println(set);


    }
}

在这里插入图片描述

去重原理

对象的equals,hashcode。要重写,add对象的时候是互斥的,后面相同的都进不去,只有第一个进去。

Set自动寻找hashcode和equals。

在这里插入图片描述

HashSet是无序的

在这里插入图片描述
在这里插入图片描述

变有序

在这里插入图片描述

隆重推出:LinkedLinkHashSet(和输入顺序一致)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

学历不会改变命运但知识一定可以改变命运

一、知识与学历的区别 首先&#xff0c;我们需要区分“知识”与“学历”。学历通常是指一个人通过正规教育体系获得的证书或学位&#xff0c;而知识则是更为宽泛的概念&#xff0c;它包括了一个人通过各种途径获得的信息、技能和理解。学历可能只是知识的一部分&#xff0c;而…

自然语言处理系列五十二》文本分类算法》BERT模型算法原理及文本分类

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列五十二文本分类算法》BERT模型算法原理及文本分…

day7 测试知识积累

1.有一个班级表,里面有学号,姓名,学科,分数。找到语文学科分数最高的前10位的姓名(SQL) select 姓名 from 班级表 where 学科=语文 order by 分数 DESC limit 10; 2.有一张年级表,有班级,年级,学生姓名,找到这10名同学所在的班级(SQL) select class from 年级表 wher…

《python语言程序设计》第8章第12题生物信息:找出基因,生物学家使用字母A C T和G构成字符2串建模一个基因组(上)

草稿一、用单一方法遍历文本 9.1代码 genome_text TTATGTTTTAAGGATGGGGCGTTAGTTdef div_word(word_to_judge):len_num len(word_to_judge)save_word ""if len_num % 3 0:print("This word is valid")if save_word.find("ATG") "ATG&qu…

SpringBoot链路追踪②:如何集成?

首先下载Zipkin的jar包&#xff1a;Central Repository: io/zipkin/zipkin-server (maven.org) 根据自己的项目版本。我的版本分别是&#xff1a; <spring-boot.version>2.7.18</spring-boot.version> <spring-cloud.version>2021.0.8</spring-cloud.ve…

Spring理论知识(Ⅳ)——Spring Instrumentation模块

Spring的组成 Spring由20个核心依赖组成&#xff0c;这20个核心依赖可以分为6个核心模块 Spring Instrumentation模块介绍 总的来说&#xff0c;Spring Instrumentation提供了类植入&#xff08;Instrumentation&#xff09;支持和类加载器的实现&#xff0c;可以在特定…

解决报错【ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。】

1、问题发生 用pip安装时出现报错【ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。: c:\\programdata\\anaconda3\\lib\\site-packages\\__pycache__\\typing_extensions.cpython-39.pyc Consider using the --user option or check the perm…

多媒体信息共享|基于SprinBoot+vue的多媒体信息共享平台(源码+数据库+文档)

多媒体信息共享平台 目录 基于SprinBootvue的多媒体信息共享平台 一、前言 二、系统设计 三、系统功能设计 系统前台功能模块 后台模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌…

软考计算机软件基础知识总结

目录 前言 计算机软件概述 操作系统 数据库 文件系统 网络协议 中间件 软件构件 应用软件 最后 前言 早期的计算机软件和计算机程序 (Computer Program) 的概念几乎不加区别&#xff0c;后来计算机 软件的概念在计算机程序的基础上得到了延伸。计算机软件是指计算机系…

基于HybridCLR做的一个FlyBird Demo

周末学习了下HybridCLR的原理和用法做了个FlyBrid小demo。记录一下 官网里写的原理&#xff1a; 对于这个我的理解是&#xff1a; Unity引擎的代码使用还是AOT方式。对于项目业务这块打成多个程序集。运行时使用了解释器&#xff0c;解释执行。从而完成热更新。 一。环境安装…

MySQL5.6迁移到DM8

注意&#xff1a; MySQL 5.7 与 MySQL 8.0 的语法有所区别&#xff0c;本文档是将MySQL5.6迁移到DM8。 迁移前准备 源库 数据库信息 统计源端业务库要迁移的数据量、字符编码、归档保留等信息。 内容 说明 备注 数据库架构 单机 节点数 1 数据库版本 MySQL 5.6…

OpenGL/GLUT实践:实现反弹运动的三角形动画与键盘控制(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub&#xff1a;A-UESTCer-s-Code 文章目录 1 运行效果2 实验过程2.1 环境配置2.2 绘制三角形2.2.1 渲染函数2.2.2 主函数2.2.3 运行结果 2.3 调整窗口大小2.4 简单动画与按键控制2.4.1 简单旋转2.4.2 键盘控制 2.5 窗口反弹动画2.5.1 处理窗口大小变化2.5.2 渲染函数…

【Redis】缓存(下)

经过缓存这篇文章的概述&#xff0c;已经对缓存有了初步的了解和认知。在本篇文章中&#xff0c;主要是通过代码来实现缓存的应用&#xff0c;以及在使用缓存过程中出现的经典问题。 简单应用 需求&#xff1a;根据菜品id来查询缓存 流程&#xff1a;① 从缓存中查询&#x…

『功能项目』怪物的信息显示【15】

本章项目成果展示 我们打开上一篇14怪物反击主角复活的项目&#xff0c; 本章要做的事情是当主角进入怪物的攻击范围之内时显示怪物的血量信息 在Canvas创建一个空物体 将空物体GameObject钉到视角上方 重命名为KingInfoUI 在子级创建一个Image 在资源文件夹下创建一个空文件命…

【数据结构 | 每日一题】图的概念辨析

图的概念辨析 考点分析&#xff1a;我们学习数据结构图的第一小节就是&#xff1a;图的基本概念&#xff0c;我们会发现图的概念非常多且有些概念之间又很像&#xff0c;而对于初学者来说&#xff0c;相比树的概念是不好理解的&#xff0c;很容易搞混&#xff0c;因此做了这么…

Tapd敏捷开发平台的使用心得

Tapd敏捷开发平台的使用心得 一、Tapd 简介 TAPD(Tencent Agile Product Development),腾讯敏捷产品研发平台行业领先的敏捷协作方案,贯穿敏捷产品研发生命周期的一站式服务,了解敏捷如下图 二、几个核心模块概念 需求迭代缺陷故事墙前期项目需求的管理,可以按类别建…

如何交叉编译 Linux v4l-utils 依赖库?

本文将以在 Ubuntu 20.04 系统的 x86_64 机器上&#xff0c;为 aarch64 架构的嵌入式机器&#xff0c;交叉编译 v4l-utils&#xff08;libv4l&#xff09;为例&#xff0c;进行介绍。 安装编译 v4l-utils 所需的依赖库。 $ apt update $ apt install make automake libtool安…

【docker】docker 简介

docker 简介 是什么虚拟化、容器化案例为什么要虚拟化、容器化&#xff1f; 是什么虚拟化、容器化 物理机&#xff1a;实际的服务器或者计算机。相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境&#xff0c;有时也称为“寄主”或“宿主”。 虚拟化&…

【时间盒子】-【3.新建项目】创建元服务工程,选择默认模板Empty Ability

一、新建项目 1、打开DevEco Studio >>文件>>新建>>新建项目&#xff0c;选择元服务 Atomic Service>>默认模板Empty Ability。 2、设置元服务的工程名称、Bundle name等&#xff0c;模型选Stage&#xff0c;语言是ArkTS&#xff0c;支持的设备类型只…

异步并发处理利器:在 Jupyter Notebook 中玩转 asyncio

asyncio.run报错 RuntimeError: asyncio.run() cannot be called from a running event loop 在jupyter notebook中运行下述代码就会出现上述报错 import uvicorn from fastapi import FastAPI from fastapi.responses import JSONResponse app FastAPI() app.get(“/”) d…