Tag: lambda

将对象属性列表加入String

我现在正在学习lambda,我想知道如何用lambda的单行编写这段代码。 我有一个Person类,其中包含ID和name字段 目前,我有一个List存储这些Person对象。 我想要完成的是获取一个由人的id组成的字符串。 “id1,id2,id3” 。 我怎样才能用lambda实现这个目标?

Java中lambda() – > {}的含义

我正在看下面的Stack Overflow答案: 如何在运行时更改Spring的@Scheduled fixedDelay 在代码中有以下行: schedulerFuture = taskScheduler.schedule(() -> { }, this); 我想知道lambda () -> {}在该代码中的含义。 我需要在不使用lambdas的情况下编写它。

将方法保存到变量java 8中

是否可以将方法保存到变量中? 我有一个名为MyFilter的类,它在不同的字段上过滤Items。 MyFilter的构造函数应该问两件事: 字符串,例如按语言过滤项目,“英语” 这应该是一种方法 例如: 我有一个项目,我想检查语言==字符串给filter 所以我需要获得该Item的语言,所以Item.getLanguage()…… 我还需要Item.getTitle(),Item.getId()等等。 我认为这可能与lambda有关,但我不知道如何。

将命名函数作为参数传递

Java 8添加了lambda表达式。 以类似于匿名类的方式使用lambdas非常简单,但我想知道是否存在使用命名函数作为其他函数的参数的相关function。 例如,是否有Java方法来编写以下Python代码: list1 = (1,2,3) list2 = (4,5,6) def add(a, b): return a+b for e in map(add, list1, list2): print(e) 产量 5 7 9

Java:在lambda中分配一个变量

我不能用Java做到这一点: Optional optStr = Optional.of(“foo”); String result; optStr.ifPresent(s -> result = s); 该文档说lambda中使用的变量必须是有效的。 那么如何很好地从lambda中提取和存储一些东西呢? 实际上,真实的用例更复杂。 我想用matcher.replaceAll一个接一个地将几个正则表达式应用于一个字符串。 我在forEach lambda中这样做,并想在某处存储中间结果。

Java 8,Lambda:在分组列表中排序并将所有组合并到列表中

基于以下答案: https : //stackoverflow.com/a/30202075/8760211 如何通过stud_id对每个组进行排序,然后通过stud_location返回一个包含所有学生的List作为分组结果,然后按stud_id排序? 将它作为现有Lambda表达式的扩展会很棒: Map<String, List> studlistGrouped = studlist.stream().collect(Collectors.groupingBy(w -> w.stud_location)); 我需要根据原始列表中元素的顺序进行分组。 First group: “New York” Second group: “California” Third group: “Los Angeles” 1726, “John”, “New York” 4321, “Max”, “California” 2234, “Andrew”, “Los Angeles” 5223, “Michael”, “New York” 7765, “Sam”, “California” 3442, “Mark”, “New York” 结果将如下所示: List groupedAndSorted = …. 1726, “John”, “New […]

如果编译器可能内联日志记录调用,为什么还要在记录API时使用lambda表达式

许多日志框架(例如,log4j)允许您将lambda表达式而不是String s传递给日志记录API。 参数是如果字符串对构造特别有表现力,那么字符串结构可以通过lambda表达式延迟执行。 这样,只有在系统的日志级别与调用的日志级别匹配时才构造字符串。 但是,鉴于现代编译器会自动执行大量内联方法,是否真的有必要以这种方式使用lambda表达式? 我将在下面提供一个简化示例来certificate这一问题。 假设我们的传统日志记录方法如下所示: void log(int level, String message) { if (level >= System.logLevel) System.out.println(message); } // …. System.logLevel = Level.CRITICAL; log(Level.FINE, “Very expensive string to construct …” + etc); 让我们假设FINE小于CRITICAL ,因此,尽管构造了一个昂贵的字符串,但由于没有输出消息,所以不是。 Lambda日志记录API可以帮助解决这种情况,以便在必要时仅对字符串进行评估(构造): void log(int level, Supplier message) { if (level >= System.logLevel) System.out.println(message.apply()); } // …. System.logLevel = Level.CRITICAL; log(Level.FINE, () […]

如何在Spring XML文件中声明Java 8方法引用?

我想将Java 8方法引用声明为Spring bean。 在Spring XML文件中执行此操作的最简单方法是什么? 例如,假设我有: class Foo { Foo(ToLongFunction fn) { … } } class Bar { long getSize() { … } } …我想创建一个Foo ,它将方法引用Bar::getSize作为构造函数参数。 如何在Spring bean XML文件中声明Foo实例?

Java Lambda表达式是否与Groovy闭包的逻辑类似?

我了解了Java 8新functionLambda表达式 。 所以这是我使用Lambda表达式的“HelloWorld”类 public class LambdaHelloWorld { interface HelloWorld { String sayHello(String name); } public static void main(String[] args) { HelloWorld helloWorld = (String name) -> { return “Hello ” + name; }; System.out.println(helloWorld.sayHello(“John Doe”)); } } 这种风格与Groovy封闭非常相似。 这是时髦的“HelloWorld” def sayHello(name) { println(“Hello $name!”) } def clos = {name -> sayHello(name)} clos.call(‘John Doe’) 我认为这两个代码之间的差异较小。是不是Java […]

按Java 8中的Map列表分组

我有一个像这样的列表: List<Map> 有没有办法,使用lambda,将此列表转换为: Map<String, List> 例: Map m1 = new HashMap(); m1.put(“A”, 1); m1.put(“B”, 100); Map m2 = new HashMap(); m2.put(“A”, 10); m2.put(“B”, 20); m2.put(“C”, 100); List<Map> beforeFormatting = new ArrayList(); beforeFormatting.add(m1); beforeFormatting.add(m2); 格式化后: Map<String, List> afterFormatting; 看起来像是这样的: A -> [1, 10] B -> [100, 20] C -> [100]