草庐IT

lambda表达式

全部标签

java - 仅当字符未直接包含在所需字符串之前时,正则表达式才匹配

我正在尝试解决thisCodingBatproblem:Returntrueifthegivenstringcontainsanappearanceof"xyz"wherethexyzisnotdirectlypreceededbyaperiod(.).So"xxyz"countsbut"x.xyz"doesnot.xyzThere("abcxyz")→truexyzThere("abc.xyz")→falsexyzThere("xyz.abc")→true我正在尝试使用正则表达式解决此问题,但我不确定如何处理xyz前面没有直接加上句点的要求。对于没有约束的问题,我的解决方案是这样的:

java - 正则表达式问题 ^[a-zA-Z0-9]{5,10}$

上面的正则表达式(在Java中)匹配一串长度在5到10之间的字母数字字符。如何修改上述正则表达式来匹配上述要求以及匹配空字符串? 最佳答案 使其可选(完全匹配一次或零次)^([a-zA-Z0-9]{5,10})?$ 关于java-正则表达式问题^[a-zA-Z0-9]{5,10}$,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4021973/

java - JSP 文件中的 Lambda 表达式无法编译

我已经尝试了stackoverflow上提到的大部分建议,但还没有找到解决方案。我遇到的错误如下。Anerroroccurredatline:379inthejspfile:/application-new-project_process.jspLambdaexpressionsareallowedonlyatsourcelevel1.8orabove我正在使用IntelliJIDEA2016.2并应用了这些设置。ProjectStructure→Project,ProjectSDKto1.8(javaversion"1.8.0_102")项目结构→项目,项目语言级别到8.0-Lamb

java - 在数组映射期间将 lambda 替换为 flatMap 中的方法引用

假设我们有一个Customer类:publicclassCustomer{privateCar[]cars;//getter,setter,constructor}以及我们需要在汽车上映射的客户集合。目前我正在这样做:Collectioncustomers=...customers.stream().flatMap(customer->Arrays.stream(customer.getCars()))...它运行良好,但代码看起来不优雅。我真的很想用使用通常看起来更具可读性和更紧凑的方法引用的代码替换它。但是使用数组类型的字段就很难了。问题有什么方法可以增强flatMap调用,使其更

java - 将 Java 8 lambda 谓词与逻辑运算符相结合

我有一个Stream流而SomeClass有boolean方法isFoo()和isBar().我想检查流中的所有元素是否同时具有isFoo()和isBar()等于true。我可以通过SomeClass:isFoo和SomeClass::isBarlambdas单独检查这些条件。但是我如何将这两个lambda表达式与像and/&&这样的逻辑运算符结合起来呢?一个明显的方法是编写一个额外的lambda:stream.allMatch(item->item.isFoo()&&item.isBar());但我想避免编写额外的lambda。另一种方法是强制转换为Predicate:stream.

java - Optional ifPresent() 可以用在更大的表达式中以减轻对 get() 的调用吗?

为了避免调用可能引发异常的get():if(a.isPresent())list.add(a.get());我可以将这个表达式替换为:a.ifPresent(list::add);但是如果我需要执行一个更大的表达式怎么办:if(a.isPresent()&&b&&c)list.add(a.get());是否仍然可以为此使用lambda形式来减少对get()的调用?我的用例是尽可能避免get()以防止错过可能的未经检查的异常。 最佳答案 我的假设是您必须分别处理其他boolean,但我可能错了。if(b&&c){a.ifPresent

java - "new"Java Lambda方法引用中的关键字

这个问题在这里已经有了答案:Referencetoaninstancemethodofaparticularobject(6个答案)关闭4年前。我见过很多在lambda方法引用中实例化新类的方法,但似乎无法理解原因。什么时候方法引用中需要new关键字?例如,以下通过编译:UnaryOperatorstringToUpperCase=String::toUpperCase;但这不是:UnaryOperatorstringToUpperCase=newString()::toUpperCase;

java - 注释表达式的非法开头

我正在使用Ant进行构建,我遇到了这些错误:Buildfile:...\build.xmlclean:[delete]DeletingdirectoryD:\IdanWorkSpace\ECMSEJB\classesejb.compile:[mkdir]Createddir:D:\IdanWorkSpace\ECMSEJB\classes[javac]Compiling26sourcefilestoD:\IdanWorkSpace\ECMSEJB\classes[javac]...\src\com\mirs\ecms\mdb\ECMSDispatcherMDB.java:28:ille

Java 正则表达式 "[.]"与 "."

我正在尝试在Java中使用一些正则表达式,我在调试代码时遇到了这个问题。[.]和.有什么区别?令我惊讶的是.at会匹配“cat”,但[.]at不会。 最佳答案 [.]按字面匹配点(.),而.匹配除换行符(\n)(除非你使用DOTALL模式)。您还可以使用\.("\\..如果您使用java字符串文字)来逐字匹配点。 关于Java正则表达式"[.]"与".",我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

java - 使用 Java String.replaceAll 的正则表达式

我希望按如下方式替换java字符串值。以下代码无效。cleanInst.replaceAll("[]","");cleanInst.replaceAll("[]","");cleanInst.replaceAll("[//]","/");cleanInst.replaceAll("[\bPhysicsDept.\b]","PhysicsDepartment");cleanInst.replaceAll("[\b/n\b]",";");cleanInst.replaceAll("[\bDEPT\b]","TheDepartment");cleanInst.replaceAll("[\bD