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:如何要查找的元素是存在的,那么返回真实的索引值
        //相反,返回的是  - 插入点 - 1
        System.out.println(Arrays.binarySearch(arr, 3));
        //拷贝数组copyOf
        int[] 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));
        //填充数组fill
        Arrays.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>() {
            @Override
            public 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() {
            @Override
            public 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>() {
            @Override
            public 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);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/668918.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c# 学习教程

打印语句 折叠代码 变量 整形 浮点型 特殊类型

Java18+前端html+后端springboot一套可在线预约、在线下单的家政预约上门服务系统源码 家政系统(用户端)介绍

Java18前端html后端springboot一套可在线预约、在线下单的家政预约上门服务系统源码 家政系统&#xff08;用户端&#xff09;介绍 家政服务用户端是一个为家庭用户提供便捷、高效家政服务的应用程序。 以下是家政服务用户端的详细功能描述&#xff1a; 一、注册与登录&#…

离线环境下安装NVIDIA驱动、CUDA(HUAWEI Kunpeng 920 + NVIDIA A100 + Ubuntu 20.04 LTS)

文章目录 前言 一、基础环境 1.1、处理器型号 1.2、英伟达显卡型号 1.3、操作系统 1.4、软件环境 二、取消内核自动升级 2.1、查看正在使用的内核版本 2.2、查看正在使用的内核包 2.3、禁止内核更新 三、配置本地apt源 3.1、挂载iso镜像文件 3.2、配置apt源 3.3、…

形式参数和实际参数

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在调用函数时&#xff0c;大多数情况下&#xff0c;主调函数和被调用函数之间有数据传递关系&#xff0c;这就是有参数的函数形式。函数参数的作用是…

如何仿一个抖音极速版领现金的进度条动画?

效果演示 不仅仅是实现效果&#xff0c;要封装&#xff0c;就封装好 看完了演示的效果&#xff0c;你是否在思考&#xff0c;代码应该怎么实现&#xff1f;先不着急写代码&#xff0c;先想想哪些地方是要可以动态配置的。首先第一个&#xff0c;进度条的形状是不是要可以换&am…

【图解IO与Netty系列】Reactor模型

Reactor模型 Reactor模型简介三类事件与三类角色Reactor模型整体流程 各种Reactor模型单Reactor单线程模型单Reactor多线程模型主从Reactor模型 Reactor模型简介 Reactor模型是服务器端用于处理高并发网络IO请求的编程模型&#xff0c;与传统的一请求一线程的同步式编程模型不…

day05-多任务-正则-装饰器

一、多任务 1-进程和线程 进程是操作系统分配资源的最小单元 线程执行程序的的最小单元 线程依赖进程&#xff0c;可以获取进程的资源 一个程序执行 先要创建进程分配资源&#xff0c;然后使用线程执行任务 默认情况下一个进程中有一个线程 2-多任务介绍 运行多个进程或线程执…

Day44 动态规划part04

背包问题 01背包问题&#xff1a;每件物品只能用一次完全背包问题&#xff1a;每件物品可以使用无数次 01背包问题 暴力解法&#xff1a;每一件物品其实只有两个状态&#xff0c;取或者不取&#xff0c;所以可以使用回溯法搜索出所有的情况&#xff0c;那么时间复杂度就是 o…

【LeetCode刷题】二分查找:寻找旋转排序数组中的最小值、点名

【LeetCode刷题】Day 14 题目1&#xff1a;153.寻找旋转排序数组中的最小值思路分析&#xff1a;思路1&#xff1a;二分查找&#xff1a;以A为参照思路2&#xff1a;二分查找&#xff0c;以D为参照 题目2&#xff1a;LCR 173.点名思路分析&#xff1a;思路1&#xff1a;遍历查找…

【显示方案IC-速显微】

最近偶然间接触到“速显微”的显示方案&#xff0c;个人体验了一把感觉还是挺顺手的&#xff0c;虽然手里没有板子没有上手测试一番。 这是他们的官网链接&#xff1a; https://www.thorsianway.com/product/chip 从官网可以看到有两颗个系列的IC已经量产&#xff1a;GC9005和G…

物联网实战--平台篇之(十一)设备管理后台

目录 一、设备数据库 二、添加设备 三、排序设备 四、重命名设备 五、删除设备 六、移动设备 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/categ…

词法分析器的设计与实现--编译原理操作步骤,1、你的算法工作流程图; 2、你的函数流程图;3,具体代码

实验原理&#xff1a; 词法分析是编译程序进行编译时第一个要进行的任务&#xff0c;主要是对源程序进行编译预处理之后&#xff0c;对整个源程序进行分解&#xff0c;分解成一个个单词&#xff0c;这些单词有且只有五类&#xff0c;分别时标识符、关键字&#xff08;保留字&a…

【匹配线段问题】

问题&#xff1a; 如下图所示。图中有两行正整数&#xff0c;每行中有若干个正整数。如果第一行的某个数r与第二行的某个数相同&#xff0c;这样就可以在这两个正整数之间划一条线&#xff0c;并称之为r-匹配线段。下图中存在3-匹配线段和2-匹配线段。 请编写完整程序&#xf…

[12] 使用 CUDA 加速排序算法

使用 CUDA 加速排序算法 排序算法被广泛用于计算应用中有很多排序算法&#xff0c;像是枚举排序或者说是秩排序、冒泡排序和归并排序&#xff0c;这些排序算法具有不同的&#xff08;时间和空间&#xff09;复杂度&#xff0c;因此对同一个数组来说也有不同的排序时间&#xf…

9款实用而不为人知的小众软件推荐!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 在电脑软件的浩瀚海洋中&#xff0c;除了那些广为人知的流行软件外&#xff0c;还有许多简单、干净、功能强大且注重实用功能的小众软件等待我们…

Ubuntu中PDF阅读器和编辑器

1. 福昕PDF编辑器 1.1. 下载地址 PDF阅读器下载_PDF编辑器下载_PDF软件官方下载_福昕软件官网 1.2. 安装 sudo dpkg -i signed_com.foxit.foxitpdfeditor_xxx_amd64_UOS.deb 2. WPS DPF 2.1. 下载地址 WPS Office 2019 for Linux-支持多版本下载_WPS官方网站 2.2. 使用 …

【LeetCode算法】第111题:二叉树的最小深度

目录 一、题目描述 二、初次解答 三、官方解法 四、总结 一、题目描述 二、初次解答 1. 思路&#xff1a;二叉树的先序遍历。求出左子树的最小高度&#xff0c;求出右子树的最小高度&#xff0c;最终返回左子树和右子树的最小高度1。关键&#xff1a;若左子树的高度为0&…

【Linux】写一个日志类

文章目录 1. 源代码2. 函数功能概览3. 代码详细解释3.1 头文件和宏定义3.2 Log类定义3.3 打印日志的方法3.4 操作符重载和析构函数3.5 可变参数函数的原理 4. 测试用例 1. 源代码 下面代码定义了一个 Log 类&#xff0c;用于记录日志信息。这个类支持将日志信息输出到屏幕、单…

[无监督学习] 11.详细图解LSA

LSA LSA&#xff08;Latent Semantic Analysis&#xff0c;潜在语义分析&#xff09;是一种自然语言处理技术。作为一种降维算法&#xff0c;它常被用于信息搜索领域。使用 LSA 能够从大量的文本数据中找出单词之间的潜在关联性。 概述 LSA 是在 1988 年被提出的算法&#xff…

Java(七)——Clonable接口与深拷贝

文章目录 Clonable接口与深拷贝克隆对象深拷贝 Clonable接口与深拷贝 克隆对象 考虑&#xff1a;怎样将对象克隆一份&#xff1f; 答案就在本文&#xff0c;我们先给出一步一步的思考过程&#xff0c;然后总结&#xff1a; 首先设置情景&#xff1a;我们有一个Person类&#x…