当前位置: 首页 > 知识库问答 >
问题:

请帮助我理解“->”在数组中的用法。

连俊智
2023-03-14

我在GeeksforGeeks解决问题,突然得到了这个。我理解“Integer.compare”的用法,但无法理解“-

static void sortBySetBitCount(Integer arr[], int n)
{ 
    Arrays.sort(arr, (a, b) -> Integer.compare(countSetBit(b), countSetBit(a)));
         //I mean here the "->" operator
} 

static int countSetBit(int n) {
    int count = 0;
    while (n>0) {
        n = n & (n - 1);
        count += 1;
    }
    return count;
}

共有2个答案

狄法
2023-03-14

这是Java 8中引入的新lambda表达式语法的一部分。有几个在线教程可以帮你找到窍门,Lambda表达式文档API链接。

它基本上是一个符号-

使用lambda表达式的一般语法是

(参数)-

参数用括号括起来,这与方法的方式相同,lambda表达式主体是用大括号括起来的代码块。

钱跃
2023-03-14

Lambda表达式在Java8中添加,并提供以下功能。

启用将功能视为方法参数,或将代码视为数据。

可以创建而不属于任何类的函数。

lambda 表达式可以像传递对象一样传递,并按需执行。

语法:

lambda operator -> body

其中 lambda 运算符可以是:

零参数:

() -> System.out.println("Zero parameter lambda");

一个参数:-

(p) -> System.out.println("One parameter: " + p);

如果可以从上下文中推断出变量的类型,则不一定要使用括号

多个参数:

<代码>(p1,p2) -

上述例子的来源 极客ForGeeks.

import java.util.*;

class MainClass{
    public static void main(String ... $){
        var out = System.out;
        Integer arr[] = {10, 32, 31};
        sortBySetBitCount(arr);
        //output is 31, 10, 32
        //31 has 5 set bits
        //10 has 3 set bits
        //32 has 1 set bit
        out.println(Arrays.asList(arr));

    }
    static void sortBySetBitCount(Integer arr[]){ 
        //first argument is array they we want to sort
        //second argument is a lambda method
        Arrays.sort(arr, (a, b) -> Integer.compare(countSetBit(b), countSetBit(a)));
    } 
    //Returns numbers of bit set
    static int countSetBit(int n) {
        int count = 0;
        while (n != 0) {
            n = n & (n - 1);
            count += 1;
        }
        return count;
    }
}
$ javac MainClass.java && java MainClass 
[31, 10, 32]

有关 lambda 方法的更多信息:

java中的Lambda方法

 类似资料:
  • 我在Geeksforgeks中解决问题,突然发现了这个问题。我理解“Integer.compare”的用法,但无法理解“Integer.compare”的用法-

  • 问题内容: 我具有以下实体结构:业务->广告活动->促销,其中一个业务可以有多个广告活动,一个业务可以具有多个促销。一对多关系都声明为LAZY。在我的代码中的一个地方,我需要从业务部门急切地获取两个集合,所以我这样做: 但是,查询返回的结果列表中包含4个业务对象,所有4个对象都引用同一个业务实例。在我的数据库中,该公司下有3个广告活动,而这3个广告活动下都有3个广告活动。 我有两个问题: 首先,我

  • 这里的任务是,我得到输入字符串,例如树,并根据频率排序,输出应该是,因为e重复2次和t, r频率是1. 我有这个代码,什么是它遍历字符串,把所有字符在字符串中的Hashmap与他们的频率和优先级队列用于排序他们降序,之后的结果是采取在字符串生成器, 但我需要一些帮助来理解优先级队列参数中使用的lambda函数。这是我的功能。 有人能用函数中的“树”来解释流程吗

  • 我目前正在做一个项目,我们必须从UML图制作代码。我了解UML类图的解剖结构,但我无法理解什么

  • 以下是测试结果:

  • 我是用aws java lambda cloud watch实现log4j2的新手。我需要自定义日志而不是云监控日志。我上传了一个csv的大尺寸记录使用步骤功能。因此,内置的cloud watch会反复记录相同的内容。所以我计划在java lambda中添加log4j2。为此,我在pom中添加了以下依赖项。xml 然后在src/main/资源下添加log4j2.xml。log4j2.xml就像下面