我在Geeksforgeks中解决问题,突然发现了这个问题。我理解“Integer.compare”的用法,但无法理解“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)-
以上示例的来源GeeksForGeeks。
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方法
我在GeeksforGeeks解决问题,突然得到了这个。我理解“Integer.compare”的用法,但无法理解“-
问题内容: 我具有以下实体结构:业务->广告活动->促销,其中一个业务可以有多个广告活动,一个业务可以具有多个促销。一对多关系都声明为LAZY。在我的代码中的一个地方,我需要从业务部门急切地获取两个集合,所以我这样做: 但是,查询返回的结果列表中包含4个业务对象,所有4个对象都引用同一个业务实例。在我的数据库中,该公司下有3个广告活动,而这3个广告活动下都有3个广告活动。 我有两个问题: 首先,我
本文向大家介绍深入理解java中Arrays.sort()的用法,包括了深入理解java中Arrays.sort()的用法的使用技巧和注意事项,需要的朋友参考一下 Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用。 但是sort()的参数有好几种,基本上是大同小异,下面是以int型数组为例的Arrays.sort()的典型用法
这里的任务是,我得到输入字符串,例如树,并根据频率排序,输出应该是,因为e重复2次和t, r频率是1. 我有这个代码,什么是它遍历字符串,把所有字符在字符串中的Hashmap与他们的频率和优先级队列用于排序他们降序,之后的结果是采取在字符串生成器, 但我需要一些帮助来理解优先级队列参数中使用的lambda函数。这是我的功能。 有人能用函数中的“树”来解释流程吗
我目前正在做一个项目,我们必须从UML图制作代码。我了解UML类图的解剖结构,但我无法理解什么
我是扑翼开发的新手。当我运行Android Studio的第一个程序时: 我只是有点小毛病: null > 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获得完整的见解。 请访问https://help.gradle.org获取更多帮助 生成失败,%1s异常:Gradle task assembleDeb