草庐IT

lambda表达式

全部标签

java - ANTLR 正则表达式中的范围量词语法

这应该相当简单。我正在使用ANTLR研究词法分析器语法,并希望将变量标识符的最大长度限制为30个字符。我试图用这一行来完成这个(遵循正常的正则表达式-除了''东西-语法):ID:('a'..'z'|'A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9'|'_'){0,29}{System.out.println("IDENTIFIERFOUND.");};代码生成没有错误,但由于生成的代码中有一行代码导致编译失败:0,29显然antlr正在获取括号之间的文本部分并将其与打印行一起放置在接受状态区域中。我搜索了ANTLR站点,但没有找到等效表达式的示例或引用。这个表达式

Java(正则表达式?)在数字/字母组合之间拆分字符串

我一直在翻阅一页又一页的Google结果,但没有找到任何可以帮助我的东西。我想做的是拆分像Bananas22Apples496Pears3这样的字符串,并将其分解为某种可读格式。由于String.split()无法执行此操作,我想知道是否有人可以向我指出可以完成此操作的正则表达式片段。扩展一点:为了简单起见,上面的字符串将被拆分为(String[]):{"Bananas:22","Apples:496","Pears:3"} 最佳答案 试试这个Strings="Bananas22Apples496Pears3";String[]re

java - 命令模式如何被 lambda 表达式取代?

这是对另一个问题(Reusecodeforloopingthroughmultidimensional-array)的跟进,在该问题中,我的特定问题已通过使用命令模式得到解决。我的问题是,我有多种方法对二维数组的每个元素执行操作-因此有很多重复代码。而不是像这样有很多方法......voidmethod(){for(inti=0;i...我是这样解决的:interfaceCommand{voidexecute(inti,intj);}voidforEach(Commandc){for(inti=0;i现在如果我们在Java中有lambda表达式,如何缩短它?一般情况下会是什么样子?(抱

Java正则表达式拆分字符串

我一直在尝试在Java中构建一个模式,以通过破折号和制表符拆分以下字符串。异常(exception)情况是,如果在字符串中已经遇到制表符之后出现破折号,即使出现一次,我们也会停止在破折号上拆分,而只会在制表符上拆分。例如:输入字符串(那些大空格是制表符):"4852174--r-watch7472080-B205"预期输出:["4852174","r","watch","7","47","2","0","80-B","20","5"]到目前为止,我正在使用以下正则表达式:"(?第一组括号表示我不希望在定界符之前有任何数字,接下来的一组表示我想要一个或多个破折号,最后一组表示我不希望后面

java - 实例方法引用和 Lambda 参数

我无法理解方法引用的语法,其中有两个参数a和b,引用是对a的方法在b上。比如我明白了Arrays.sort(personArray,comparators::compareByName);相当于Arrays.sort(personArray,(o1,o2)->comparators.compareByName(o1,o2));因为在这种情况下,lambda参数与方法调用参数(o1,o2)匹配。但是对于这个lambdastream.sorted((o1,o2)->o1.compareToIgnoreCase(o2));我的IDE告诉我这等同于:stream.sorted(String::

java - Java Lambda 表达式是否利用 "Hidden"或本地包导入?

这个问题是关于lambda表达式似乎使用的Java包的明显“隐藏”或本地导入。以下示例代码编译并运行良好(它仅列出给定目录中的文件):packagecom.mbm.stockbot;importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Paths;publicclassTemp2{publicstaticvoidmain(String[]args){Temp2t=newTemp2();t.readDir();}publicvoidreadDir(){try{Files.walk(Paths.get

java - Java 中的 Lambda 函数会跳过元素

我有一行需要解析,如下所示:@UNIT,a,b,c,,,,d,e,,,我希望Java将以下值存储在列表中:[0]=>a[1]=>b[2]=>c[3]=>null[4]=>null[5]=>null[6]=>d[7]=>e[8]=>null[9]=>null[10]=>null我想用逗号分隔值并用null替换空值.我用以下代码归档了大部分内容:metaObject.unit=Arrays.stream(line.split(",")).skip(line.startsWith("@UNIT,")?1:0).map(String::trim).map(s->"".equals(s)||""

java - Java lambda 可以将方法绑定(bind)到它们的参数吗?

这里讨论如何使用lambda将方法作为参数传递:JavaPassMethodasParameter在其他语言中,即C++,可以使用Lambdas将函数绑定(bind)到它的参数-此处讨论:BindVsLambda?在Java中,是否可以使用lambdas绑定(bind)方法?如果是这样,您将如何实现?编辑>>>>根据要求,我通常尝试做的一个例子:请注意,这里有伪代码。publicclassDataView{privatestaticArrayListrectData=newArrayList();privatestaticArrayListtextData=newArrayList()

java - 使用 GraalVM 在 AWS Lambda 中运行 Java

是否可以使用GraalVM在AWSLambda函数中运行Java?我阅读了很多关于使用GraalVMAOT(提前)编译功能冷启动Java应用程序并缩短其持续时间的文章,我想尝试在我的AWSLambda项目中使用它。 最佳答案 随着CustomAWSLambdaRuntimes的引入在re:Invent2018上,这现在是可行的。进一步查看theAWSLambdaRuntimeInterface您可以使用在https://docs.aws.amazon.com/lambda/latest/dg/runtimes-walkthrough

java正则表达式量词

我有一个字符串Stringstring="number0foobarnumber1foofoonumber2barbarbarbarnumber3foobar";我需要一个正则表达式来给我以下输出:number0foobarnumber1foofoonumber2barbarbarbarnumber3foobar我试过了Patternpattern=Pattern.compile("number\\d+(.*)(number\\d+)?");Matchermatcher=pattern.matcher(string);while(matcher.find()){System.out.p