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

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);}
}

相关文章:

  • yolov10/v8 loss详解
  • SpringBoot前端URL访问本地磁盘文件
  • Tomcat 面试题(一)
  • 用开源模型MusicGen制作六一儿童节专属音乐
  • STM32 定时器与PWM的LED控制
  • 如何用pip查看安装了哪些库?
  • AndroidStudio使用高德地图API获取手机定位
  • 爬楼梯 - LeetCode 热题 81
  • 【Bug】修改计算机名称出现ip无法连接mysql数据库
  • C#实现纳秒级的计时器功能
  • 安卓ANR检测、分析、优化面面谈
  • Sealos CLI快速部署部署K8s集群
  • 七大获取免费https的方式
  • Amazon云计算AWS(三)
  • Java 基础面试300题 (201-230)
  • 07.Android之多媒体问题
  • 2019.2.20 c++ 知识梳理
  • CSS实用技巧干货
  • C语言笔记(第一章:C语言编程)
  • gf框架之分页模块(五) - 自定义分页
  • iOS 系统授权开发
  • JavaScript函数式编程(一)
  • JavaScript中的对象个人分享
  • Java编程基础24——递归练习
  • java概述
  • Java面向对象及其三大特征
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 从setTimeout-setInterval看JS线程
  • 大快搜索数据爬虫技术实例安装教学篇
  • 大型网站性能监测、分析与优化常见问题QA
  • 前端性能优化——回流与重绘
  • 使用common-codec进行md5加密
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 微信支付JSAPI,实测!终极方案
  • 详解NodeJs流之一
  • 正则学习笔记
  • scrapy中间件源码分析及常用中间件大全
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • #if和#ifdef区别
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (Java入门)学生管理系统
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (六)Flink 窗口计算
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))