当前位置: 首页 > news >正文

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

多态(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(和输入顺序一致)

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Tools】如何评价黑悟空这款游戏
  • Python中的集合魔法:解锁高效数据处理的秘密
  • 无法连接Redis服务问题排查
  • 云计算实训36——mysql镜像管理、同步容器和宿主机时间、在容器外执行容器内命令、容器的ip地址不稳定问题、基础镜像的制作、镜像应用
  • Question mutiple pdf‘s using openai, pinecone, langchain
  • 新160个crackme - 045-CyTom-crackme
  • 如何用GPT进行编程辅助?
  • MyBatis 源码解析:DefaultSqlSessionFactory 的创建与管理
  • 基于QT与STM32的电力参数采集系统(华为云IOT)(211)
  • 面试经验分享 | 华为安全面试--年薪50万offer
  • MySQL中的分组统计
  • 记一次ssh伪终端修改为shell
  • 案例-KVM高级功能部署(虚拟化技术实战)
  • nuxt3连接mongodb操作
  • 线性代数 第五讲:线性方程组_齐次线性方程组_非齐次线性方程组_公共解同解方程组_详解
  • 网络传输文件的问题
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • .pyc 想到的一些问题
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • bearychat的java client
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • js
  • js算法-归并排序(merge_sort)
  • vue 个人积累(使用工具,组件)
  • Webpack 4x 之路 ( 四 )
  • webpack4 一点通
  • Windows Containers 大冒险: 容器网络
  • 关于字符编码你应该知道的事情
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 收藏好这篇,别再只说“数据劫持”了
  • 网页视频流m3u8/ts视频下载
  • puppet连载22:define用法
  • 湖北分布式智能数据采集方法有哪些?
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​比特币大跌的 2 个原因
  • ​低代码平台的核心价值与优势
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (1)Hilt的基本概念和使用
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)php投票系统 毕业设计 121500
  • (回溯) LeetCode 46. 全排列
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • .apk文件,IIS不支持下载解决
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net通过类组装数据转换为json并且传递给对方接口
  • .stream().map与.stream().flatMap的使用
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • // an array of int
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?