首页 > 编程语言 >Java学习笔记14

Java学习笔记14

时间:2023-04-02 21:22:57浏览次数:44  
标签:省略 Java 14 笔记 public 数组 Integer o2 o1

1.Arrays类

​ Arrays类包含用于操作数组的各种方法(如排序和搜索)。该类没有构造函数,直接使用类名.方法名()的方法调用需要的方法。

常用方法

方法 作用
public static String toString(数组) 把数组拼接成一个字符串
public static int binarySearch(数组, 查找的元素) 二分查找法查找元素
public static int[] copyOf(原数组, 新数组长度) 拷贝数组
public static int[] copyOfRange(原数组, 起始索引, 结束索引) 拷贝数组(指定范围,包头不包尾)
public static void fill(数组, 元素) 用指定元素填充数组
public static void sort(数组) 按照默认方式(升序)进行数组排序
public static void sort(数组, 排序规则) 按照指定的规则排序

sort方法示例

/*
 * public static void sort(数组, 排序规则)
 * 该方法只能给引用数据类型的数组排序
 * 底层:利用二分查找+插入排序进行排序
 * */
Integer[] arr = {2, 3, 1, 5, 6, 7, 8, 4, 9};
Arrays.sort(arr, new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o1 - o2; // o1 - o2为升序,o2 - o1为降序
    }
});
System.out.println(Arrays.toString(arr));

2.Lambda表达式

2.1 函数式编程

​ 函数式编程(Functional Programing)是一种思想特点。

对比:

  • 面向对象编程:先找对象,让对象做事情,强调谁去做
  • 函数式编程:忽略面向对象的复杂语法,强调做什么,而不是谁去做。

2.2 Lambda表达式

​ Lambda表达式是JDK8新增的一种语法形式。用于简化匿名内部类的写法。

示例:

// 原句:
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表达式只能简化函数式接口的匿名内部类的写法。

  • 函数式接口:有且仅有一个抽象方法的接口,可在接口上方加@FunctionalInterface注解验证。

2.3 Lambda表达式的省略写法

省略核心:可推导,可省略。

省略规则:

  • 参数类型可以省略不写。
  • 如果只有一个参数,参数类型可以省略,同时小括号括号也可以省略。
  • 如果方法体只有一行,大括号、return、分号可以省略(同时省略)

示例1:

// 原句:
Arrays.sort(arr, (Integer o1, Integer o2) -> {
            return o1 - o2;
        }
);
// 省略写法:
Arrays.sort(arr, (o1, o2) -> o1 - o2);

示例2:

// 原句:
fun((Integer i) -> {
            System.out.println(1);
        }
);
// 省略写法:
fun(i -> System.out.println(1));

标签:省略,Java,14,笔记,public,数组,Integer,o2,o1
From: https://www.cnblogs.com/kuaicode/p/17281388.html

相关文章

  • ARC149(A~E)
    Tasks-AtCoderRegularContest149又是114514年前做的题,现在来写屯了好多,清一下库存A-RepdigitNumber(atcoder.jp)直接暴力枚举所有每一位都为\(x\)的数,然后数位从\(1\)到\(n\),若当前枚举到了\(i\),设\(i-1\%M\)为\(now\),则\(now=(now*10+x)\%M\),若\(now\)为\(0\),则\(......
  • 从 JDK 9 到 19,认识一个新的 Java 形态(内存篇)
    前言在JDK9之前,Java基本上平均每三年出一个版本。但是自从2017年9月份推出JDK9到现在,Java开始了疯狂更新的模式,基本上保持了每年两个大版本的节奏。从2017年至今,已经发布了一个版本到了JDK19。其中包括了两个LTS版本(JDK11与JDK17)。除了版本更新节奏明显加快之......
  • 新概念2册L75笔记(复习一般过去时&系动词:变化)
    L75SOS单词理解语法理解一般过去时功能:发生在过去的事情;礼貌委婉。关键词:过去具体时间(yesterday/ago/last…)课文理解......
  • JNDI(Java Naming and Directory Interface–Java命名和目录接口)
    JNDI(JavaNamingandDirectoryInterface,Java命名和目录接口)为应用程序提供了一种通过网络访问远程服务的方式。本节我们学习如何通过JNDIAPI注册和访问JDBC数据源对象。读者如果需要了解更多JNDI相关细节,则可参考JNDI规范文档。JNDIAPI的命名服务可以把一个逻辑名称和一个具......
  • java使用模块后,用maven打包时,需要保护的maven插件
    <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><configuration><release>11</release><......
  • java流
    流运算map和flatMapmap函数接收一个函数作为参数,将该函数应用于流中的每个元素,并返回一个新的流。例如,我们可以通过map函数将流中的每个元素都加上1:List<Integer>numbers=Arrays.asList(1,2,3,4);List<Integer>incrementedNumbers=numbers.stream()......
  • java -- static, 内部类, 权限, 参数传递
    static关键字static是静态修饰符,一般修饰成员。被static修饰的成员属于类,不属于单个这个类的某个对象。static修饰的成员被多个对象共享。static修饰的成员属于类,但是会影响每一个对象。被static修饰的成员又叫类成员,不叫对象的成员。static特点被static修饰的成员变量属于类,不......
  • AtCoder Beginner Contest 144
    AtCoderBeginnerContest144https://atcoder.jp/contests/abc144补一下3.23做的。D-WaterBottle分类讨论,三角函数。#include<bits/stdc++.h>#definepiacos(-1)usingnamespacestd;intmain(){inta,b,x;cin>>a>>b>>x;......
  • 有关哈希表简单的散列函数实现-Java实现
    其实现不难,所以直接贴代码:1packagedataSrtuct;23importjava.util.ArrayList;4importjava.util.LinkedList;56publicclassHashTab{7publicstaticvoidmain(String[]args){8hashTablehashT=newhashTable(10);9......
  • leetcode 394.字符串解码 Java
    394.字符串解码给定一个经过编码的字符串,返回它解码后的字符串。编码规则为:k[encoded_string],表示其中方括号内部的encoded_string正好重复k次。注意k保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外......