我在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;
}
这是Java 8中引入的新lambda表达式语法的一部分。有几个在线教程可以帮你找到窍门,Lambda表达式文档API链接。
它基本上是一个符号-
使用lambda表达式的一般语法是
(参数)-
参数用括号括起来,这与方法的方式相同,lambda表达式主体是用大括号括起来的代码块。
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就像下面