Arrays(操作数组工具类)、Lambda表达式

2024-06-01 21:36

本文主要是介绍Arrays(操作数组工具类)、Lambda表达式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

package exercise;import java.util.Arrays;public class ArraysDemo {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5};//将数组变成字符串System.out.println(Arrays.toString(arr));//二分查找法查找元素//细节1:1.数组必须是有序的 2.元素必须是升序的//细节2:如何要查找的元素是存在的,那么返回真实的索引值//相反,返回的是  - 插入点 - 1System.out.println(Arrays.binarySearch(arr, 3));//拷贝数组copyOfint[] newArr = Arrays.copyOf(arr, 6);System.out.println(Arrays.toString(newArr));//拷贝数组copyOfRange(指定范围)//包头不包尾,包左不包右int[] newArr2 = Arrays.copyOfRange(arr, 1, 4);System.out.println(Arrays.toString(newArr2));//填充数组fillArrays.fill(newArr2, 10);System.out.println(Arrays.toString(newArr2));//排序(底层默认快速排序),升序排序int[] arr2 = {9, 8, 7, 6, 5, 4, 3, 2, 1};Arrays.sort(arr2);System.out.println(Arrays.toString(arr2));}
}

针对于sort,如何让其降序排序

package exercise;import java.util.Arrays;
import java.util.Comparator;public class Sort {public static void main(String[] args) {//public static void sort(数组,排序规则)按照指定的规则排序//参数一:要排序的数组//参数二:排序的规则//细节://只能给引用数据类型的数组进行排序//如果数组是基本数据类型的,需要变成其对于的包装类Integer[] arr = {1, 5, 3, 9, 2};//第二个参数是一个接口,所以我们在调用方法的时候,需要传递这个接口的实现类对象,作为排序的规则。//但是这个实现类,我只要使用一次,所以就没有必要单独的去写一个类,直接采取匿名内部类的方式就可以了//简单理解://o1-o2: 升序//o2-o1: 降序Arrays.sort(arr, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1 - o2;}});System.out.println(Arrays.toString(arr));}
}

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

在这里插入图片描述

在这里插入图片描述

package exercise;public class LambdaDemo {public static void main(String[] args) {method(new Swinmming() {@Overridepublic void swim() {System.out.println("重写swim方法~");}});//Lambda表达式method(() -> {System.out.println("重写swim方法~");});}public static void method(Swinmming s) {s.swim();}
}
@FunctionalInterface
interface Swinmming {public abstract void swim();
}

在这里插入图片描述


在这里插入图片描述

package exercise;import java.util.Arrays;
import java.util.Comparator;public class LambdaDemo1 {public static void main(String[] args) {//lambda的省略规则://1.参数类型可以省略不写。//2.如果只有一个爹数,参数类型可以省略,同时()也可以省略。//3.如果Lambda表达式的方法体只有一行,大括号,分号,return可以省略不写,需要同时省略。Integer[] arr = {4, 3, 2, 7, 6, 9, 1};Arrays.sort(arr, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1 - o2;}});//Lambda完整表达式Arrays.sort(arr, (Integer o1, Integer o2) -> {return o1 - o2;});//Lambda简写表达式Arrays.sort(arr, (o1, o2) -> o1 - o2);System.out.println(Arrays.toString(arr));}
}

在这里插入图片描述

package exercise;import java.util.Arrays;
import java.util.Comparator;public class Demo1 {public static void main(String[] args) {String[] arr = {"yang", "ze", "chao1", "sunshine", "lulushui2"};Arrays.sort(arr, (o1, o2) -> o1.length() - o2.length());System.out.println(Arrays.toString(arr));}
}

在这里插入图片描述
GF类:

在这里插入图片描述

package exercise;import java.util.Arrays;
import java.util.Comparator;public class GfTest {public static void main(String[] args) {GirlFriend gf1 = new GirlFriend("sunshine", 18, 172);GirlFriend gf2 = new GirlFriend("lulushui", 19, 171);GirlFriend gf3 = new GirlFriend("jiuselu", 19, 171);GirlFriend[] arr = {gf1, gf2, gf3};//精简版Lambda表达式Arrays.sort(arr, (o1,o2)-> {if (o1.getAge() != o2.getAge()) {return o1.getAge() - o2.getAge();} else if (o1.getHeight() != o2.getHeight()) {return o1.getHeight() - o2.getHeight();}return o1.getName().compareTo(o2.getName());});System.out.println(Arrays.toString(arr));}
}

在这里插入图片描述

package exercise;public class Demo2 {public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 12; i++) {sum += recursion(i);}System.out.println(sum);}private static int recursion(int n) {if (n == 1 || n == 2) {return 1;}return recursion(n - 1) + recursion(n - 2);}
}

在这里插入图片描述
解析:
在这里插入图片描述

package exercise;public class Demo3 {public static void main(String[] args) {int number = 1;System.out.println(recursion(number));}private static int recursion(int day) {if (day <= 0 || day >= 11) {return -1;}if (day == 10) {return 1;}return (recursion(day + 1) + 1) * 2;}
}

在这里插入图片描述
解析:类似于斐波那契数列,20个台阶爬法=19个台阶爬法+18个台阶爬法。

package exercise;public class Demo4 {public static void main(String[] args) {System.out.println(getCount(20));}private static int getCount(int n) {if (n == 1) {return 1;}if (n == 2) {return 2;}return getCount(n - 1) + getCount(n - 2);}
}

这篇关于Arrays(操作数组工具类)、Lambda表达式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Redis中管道操作pipeline的实现

《Redis中管道操作pipeline的实现》RedisPipeline是一种优化客户端与服务器通信的技术,通过批量发送和接收命令减少网络往返次数,提高命令执行效率,本文就来介绍一下Redis中管道操... 目录什么是pipeline场景一:我要向Redis新增大批量的数据分批处理事务( MULTI/EXE