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

2024-09-03 03:36

本文主要是介绍多态,匿名内部类(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(和输入顺序一致)

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

这篇关于多态,匿名内部类(lambda表达式),集合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131912

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

JavaSE——封装、继承和多态

1. 封装 1.1 概念      面向对象程序三大特性:封装、继承、多态 。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说就是套壳屏蔽细节 。     比如:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通过键盘输入,显示器, USB 插孔等,让用户来和计算机进行交互,完成日常事务。但实际上:电脑真正工作的却是CPU 、显卡、内存等一些硬件元件。

STM32内部闪存FLASH(内部ROM)、IAP

1 FLASH简介  1 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 2 通过在程序中编程(IAP)实现程序的自我更新 (OTA) 3在线编程(ICP把整个程序都更新掉) 1 系统的Bootloader写死了,只能用串口下载到指定的位置,启动方式也不方便需要配置BOOT引脚触发启动  4 IAP(自己写的Bootloader,实现程序升级) 1 比如蓝牙转串口,

FreeRTOS内部机制学习03(事件组内部机制)

文章目录 事件组使用的场景事件组的核心以及Set事件API做的事情事件组的特殊之处事件组为什么不关闭中断xEventGroupSetBitsFromISR内部是怎么做的? 事件组使用的场景 学校组织秋游,组长在等待: 张三:我到了 李四:我到了 王五:我到了 组长说:好,大家都到齐了,出发! 秋游回来第二天就要提交一篇心得报告,组长在焦急等待:张三、李四、王五谁先写好就交谁的

如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

这里写目录标题 OOP语言的四大特性lambda输入/输出流(I/O流) OOP语言的四大特性 面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。 类-》实体的抽象类型 实体(属性,行为) -》 ADT(abstract data type) 属性-》成

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

Java基础回顾系列-第三天-Lambda表达式

Java基础回顾系列-第三天-Lambda表达式 Lambda表达式方法引用引用静态方法引用实例化对象的方法引用特定类型的方法引用构造方法 内建函数式接口Function基础接口DoubleToIntFunction 类型转换接口Consumer消费型函数式接口Supplier供给型函数式接口Predicate断言型函数式接口 Stream API 该篇博文需重点了解:内建函数式