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 ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的