草庐IT

lambda表达式

全部标签

java - 如何在 Java 1.7 中编写等效的 lambda 表达式?

我在Java1.8中有以下代码。solver.plugMonitor((IMonitorSolution)()->solution.record(solver));如何在没有lambda的情况下将其转换为Java1.7代码? 最佳答案 plugMonitor方法需要一个类型为IMonitorSolution的参数,以及一些没有参数的方法YMethod:solver.plugMonitor(newIMonitorSolution(){publicvoidYMethod(){solution.record(solver);}});感谢@

java - 如何从外部 block 开始在 lambda block 中重新抛出异常?

使用以下代码,voidkey(Key)throwsSomeCheckedException{}voidsupplier(Suppliers)throwsSomeCheckedException{ofNullable(s).ifPresent(s->{//|try{//|key(s.get());//|}catch(finalSomeCheckedExceptionsce){//|//sceiscomingfromkey()method//|//HowcanIthrowsceforoutermethod?//--/}});}我如何抛出sce就像method(supplier)方法抛出它一

Java 8 : Map Lambda expression

我有一个Map>multiFieldMap我需要迭代它的值集并将值添加到multiFieldsList如下publicListfetchMultiFieldsList(){ListmultiFieldsList=newArrayList();for(Entry>entry:multiFieldMap.entrySet()){StringentityName=entry.getKey();Listids=entry.getValue();for(Objectid:ids){Objectentity=queryService.query(entityName,queryService.pr

Java 使用正则表达式在字符串中的奇数之间放置一个 "-"

我试图在字符串中的所有奇数之间放置一个-。因此,如果一个字符串作为Hel776o传入,它应该输出Hel7-76o。破折号只能放在两个连续的奇数之间。我试图通过String.replaceAll()在一行中完成此操作我有以下行:returnstr.replaceAll(".*([13579])([13579]).*","$1-$2");如果有任何奇数,后面跟着一个奇数,在它们之间放置一个-。但它正在破坏性地替换除最后一场比赛之外的一切。例如,如果我传入"999477",它将输出7-7而不是9-9-947-7。是否需要更多分组以便我不替换除比赛之外的所有内容?我已经使用传统循环遍历字符串中

java - 为什么这个正则表达式不起作用?

我有一个正则表达式来提取两个标记、分隔符[']和撇号之间的单词,例如“StackOverflow”。问题是,为什么这个正则表达式不起作用?正则表达式:(['])|'([^']*)'这是解释它的链接:RegularExpression只能提取撇号但是,撇号之间的词没有。注意:我需要单独提取撇号和撇号之间的任何单词,例如“StackOverflow”。结果是这样的:'堆栈溢出'问候。 最佳答案 您的正则表达式表示要匹配单引号或引号之间的内容,但它是排他性的或您拥有它的方式。要将它们中的每一个都作为捕获组,您可以使用正则表达式:(')([

java - 使用 lambda 覆盖默认方法

给定一个带有默认方法的简单接口(interface):privateinterfaceA{defaultvoidhello(){System.out.println("A");}}还有一个接受它实例的方法:privatestaticvoidprint(Aa){a.hello();}我可以使用匿名类覆盖它:print(newA(){@Overridepublicvoidhello(){System.out.println("OverHello");}});但如果我尝试使用lambdaprint(()->System.out.println("OverHello2"));,我会遇到编译错误

Java 8 Lambdas - 如何从流中求和和求平均值

是否可以从流中求和、平均并转换为新对象。我有一个对象publicclassFoo{privateStringcode;privatedoubleprice;....}现在我想得到这个对象列表的平均值和总和(按代码求和的价格和按代码的平均价格)foos=Arrays.asList(newFoo("MTN",200),newFoo("MTN",210),newFoo("MTN",205),newFoo("OMT",300),newFoo("OMT",320),newFoo("OMT",310),newFoo("AAA",650),newFoo("AAA",680),newFoo("AAA"

java - spring-data-jpa: ORA-01795: 列表中表达式的最大数量为 1000

我正在使用SpringDataJPA。我想从ListclientIdList获取client.id的交易.问题是我传递了一个非常大的列表,然后返回了一个ORA-01795错误。@Query(value="SELECTTransactRepViewModelFROMTransactRepViewModelaWHEREa.clientIdIN(?1)ANDa.clDateBETWEEN?2and?3",nativeQuery=true)ListfindByClientIdList(ListclientIdList,DatestartDate,DateendDate)throwsDataAc

Java Lambda 表达式和日志记录

我正在阅读Log4j2的新功能,并且有一个功能可以启用“Java8lambda支持惰性日志记录”给出了两个例子第一个是不好的做法//pre-Java8styleoptimization:explicitlychecktheloglevel//tomakesuretheexpensiveOperation()methodisonlycalledifnecessaryif(logger.isTraceEnabled()){logger.trace("Somelong-runningoperationreturned{}",expensiveOperation());}第二个是好的做法//J

java - lambda 表达式中的 Else 子句

我使用以下lambda表达式迭代PDF文件。publicstaticvoidrun(Stringarg){PathrootDir=Paths.get(arg);PathMatchermatcher=FileSystems.getDefault().getPathMatcher("glob:**.pdf");Files.walk(rootDir).filter(matcher::matches).forEach(Start::modify);}privatestaticvoidmodify(Pathp){System.out.println(p.toString());}这部分.forE