草庐IT

lambda表达式

全部标签

java - 测试依赖项调用的 lambda 表达式

我正在尝试测试lambda表达式中的一些代码,它是另一个类的回调。classEmailSender{privateEmailBuilderemailBuilder;publicvoidsend(){StringtestEmail=emailBuilder.buildEmail("TestEmail",bodyContentAppender());//sendtestEmail}privateConsumerbodyContentAppender(){//howtotestthisthroughJUnit?returnemail->email.appendBody("BodyConten

java - 匹配另一个字符串多次出现的正则表达式

我真的希望这可以在正则表达式中解决,但我担心不会......我正在寻找一个正则表达式,它将返回一个词的多个匹配项,只有另一个词出现在同一个字符串中。用一个例子可以更好地解释这一点。考虑:Thenumbersare144,424,and345.Not45.我只想匹配“144”、“424”和“345”。(任何3位数字)-但仅如果他们之前在某处跟在术语“numbers”之后。所以下面的附加示例:Thenumberswearelookingfor:234&992应该只返回“234”和“992”。下面的句子不应该匹配任何东西:Someexamples:234,244and12我以为我正在使用以下

Java 正则表达式元字符

我找到了this线程和其中的一位用户发布了以下代码行:String[]digits2=number.split("(?我咨询了几个来源-比如1和2-破译这段代码的含义,但我无法弄清楚。谁能解释一下split()方法中的参数是什么意思?编辑:对于和我有同样问题的人,这是另一个有用的link 最佳答案 这是一个positivelookbehind.整体表达的意思是“在任何字符之后,但不捕获任何东西”。本质上,如果字符串看起来像ABC那么匹配将发生在字符之间的|处。A|B|C| 关于Java正

java - 如何判断 JDK8 lambda 是否可以赋值给类型?

编辑:这个问题格式错误,我无法真正修复它,并且是我项目中某处的错误。我的问题的根本原因是myLambda.getClass()不应抛出ClassNotFoundException,并且lambda会按预期工作。给定一个接口(interface)类ClassmyIf=MyIf.class;还有一个lambda实例ObjectmyLambda;如何确定是否可以在不抛出异常的情况下将myLambda分配给MyIf?这有点令人费解,因为myLambda.getClass()会引发异常。而“显而易见”myIf.isInstance(myLambda)返回错误 最佳答案

Java replaceAll 正则表达式错误

我想把所有的“*”都变成“.*”,除了“\*”Stringregex01="\\*toto".replaceAll("[^\\\\]\\*",".*");assertTrue("*toto".matches(regex01));//TrueStringregex02="toto*".replaceAll("[^\\\\]\\*",".*");assertTrue("tototo".matches(regex02));//TrueStringregex03="*toto".replaceAll("[^\\\\]\\*",".*");assertTrue("tototo".matches(

java - 内在函数和内联对 Lambda 性能的影响?

我用过这个基准java8-lambda-performance-test运行它时我做了以下事情:1.禁用内在用法2.禁用内联3.禁止编译模式我发现禁用前两个优化对结果没有影响。这很奇怪,而且在使用和打印内在运行基准测试时,我没有发现对内在compiledLambdaForm的任何调用由于那里大量使用数学内在函数_min,_pow...我原以为禁用内在函数会降低性能 最佳答案 您没有注意到预期性能效果的原因是poorlywrittenbenchmark.我使用JMH重写了基准测试事情终于做好了。packagelambdademo;im

java - 正则表达式:忽略组的顺序

我有一段文字:randomtext1150,25USDrandomtext和一个简单的正则表达式来提取不同货币的金额:(((\d+)(,?\s?|.)(\d{1,2}))\s?(PLN|EUR|USD|CHF|GBP))这给了我这些组:1150,25美元1150,251150,25美元但是,数字和货币可能会互换位置:randomtextUSD1150,25randomtext或randomtextUSD1150,25randomtext我应该如何改进我的正则表达式以满足该条件而不重复整个组(AB|BA),同时保持当前分组? 最佳答案

java - 从数学表达式中提取操作数的正则表达式

没有关于SO的问题可以解决我的特定问题。我对正则表达式知之甚少。为此,我正在使用Regex类在Java中构建表达式解析器。我想从表达式中提取操作数、参数、运算符、符号和函数名称,然后保存到ArrayList。目前我正在使用这个逻辑Stringstring="2!+atan2(3+9,2+3)-2*PI+3/3-9-12%3*sin(9-9)+(2+6/2)"//ThisisjustfortestingpurposelateronitwillbeprovidedbyuserListres=newArrayList();Patternpattern=Pattern.compile((\\Q

Java 可变参数传递 lambda 和值

我试图在varag中结合lambda和简单值。publicstaticvoidLog(Stringformat,Object...args){finalObject[]fmt=newObject[args.length];for(inti=0;i"aaa",d=()->111;Log("%s%d%s%d","bbb",222,s,d);//OK,OUTPUT:bbb222aaa111Log("%s%d%s%d","bbb",222,()->"aaa",()->111);//COMPILEFAIL错误:方法Log不能应用于给定类型;所需字符串,对象[]找到:字符串,字符串,整数,()->

java - 使用匿名可运行类代码进入死锁状态,但使用 lambda 可以正常工作

我正在尝试找出下面提到的代码背后的原因。在这里,如果我使用匿名内部类创建Thread,它会进入死锁状态,但使用lambda表达式它可以正常工作。我试图找到这种行为背后的原因,但找不到。publicclassThreadCreationTest{static{newThreadCreationTest();}privatevoidcall(){System.out.println("Helloguys!!!");}publicThreadCreationTest(){//whenweusethisthreaditgoesindeadlockkindofstateThreadthread1