草庐IT

lambda表达式

全部标签

java - 使用正则表达式查找第一次出现

我希望能够找到m²的第一次出现,然后是它前面的数字,可以是整数或小数。例如"sometext"38m²"sometext","sometext"48,8m²"sometext","sometext"48m²"sometext",etc..我目前拥有的是:\d\d,\d\s*(\m\u00B2)|\d\d\s*(\m\u00B2)虽然我猜它可以用findFirst()修复,但现在可以找到所有出现的地方。对如何改进Regex部分有什么想法吗? 最佳答案 要获得第一个匹配项,您只需在ifblock中使用Matcher#find():Str

Java 8 lambdas 查找 map 列表的平均值

如何使用Java-8流/lambda,通过键找到映射列表的平均值?例子:List>users=Arrays.asList(newHashMap(){{put("weight",109.0);put("height",180.2);}},newHashMap(){{put("weight",59.0);put("height",186.2);}});Mapstatistics=//(?)System.out.println(statistics);//{weight=84.0,height=183.1)使用旧的好foreach非常简单,我想知道是否可以使用lambda来实现。我需要它的原

Java8 : how to copy values of selected fields from one object to other using lambda expression

我正在尝试了解java8的新功能:forEach和lambda表达式。尝试重写这个函数:publicTcopyValues(Classtype,Tsource,Tresult)throwsIllegalAccessException{for(Fieldfield:getListOfFields(type)){field.set(result,field.get(source));}returnresult;}使用lambda。我觉得应该是这样的但是做不对:()->{returngetListOfFields(type).forEach((Fieldfield)->{field.set(

java - 是否可以对 Jetty 的 servlet 映射使用正则表达式?

我有这个映射service/service/*但我也想要/服务/主人映射到主servlet。master/service/master我认为这里存在冲突,因为调用/service/*会立即触发服务servlet。有没有办法让我在servlet映射中使用某种排除或者可能是正则表达式来做我想做的事? 最佳答案 Servlet映射总是使用最具体的匹配,所以路径/service/master将始终映射到master.这是来自Servlet3.0spec的第一条映射规则:Thecontainerwilltrytofindanexactmatc

java - 匹配邮政信箱地址的正则表达式

我正在使用这个正则表达式来捕获“POBox”字符串。当我在线测试时这似乎有效,但下面的javacode打印错误。我犯了什么错误?/^\s*((P(OST)?.?\s*(O(FF(ICE)?)?)?.?\s+(B(IN|OX))?)|B(IN|OX))/i要测试的字符串-POBox1234Stringspattern="/^\\s*((P(OST)?.?\\s*(O(FF(ICE)?)?)?.?\\s+(B(IN|OX))?)|B(IN|OX))/i";Stringregex="POBox1234";Patternpattern=Pattern.compile(spattern);Sys

java - 使用 Java 8 lambdas/transformations 组合和展平两个 Map

我有两张map:Map>mapABMap>mapBC我想将它们转换成Map>mapAC我想知道是否有一种平滑的方法可以使用lambda和转换来做到这一点。在我的特殊情况下,集合都是集合,但我想解决一般集合的问题。我的一个想法是首先将两个map组合成一个Map>>然后将其展平,但我对任何方法都持开放态度。数据说明:B应该只出现在与一个A关联的值集合中,mapBC也是如此(给定的C仅映射到一个B)。因此,给定的A应该只有一条路径。给定C,虽然可能有A->B没有B->C的映射映射,并且可能有B->C没有对应的映射A->B映射。这些孤儿根本不会出现在结果mapAC中.为了比较,这里有一个针对同

Java:字符串模式:如何为所有具有特殊字符的字母字符指定正则表达式

我想确保一个字符串只包含字母字符(具有特殊字符,如"é"、"è"、"ç"、"Ç"、"ï"等。).我这样做了,但是对于特殊字符返回false...if(myString.matches("^[a-zA-Z]+$")){returntrue;}谢谢大家! 最佳答案 您可以使用UnicodeCategory:\\p{L}或\\P{Letter}匹配来自任何语言的任何类型的字母。if(myString.matches("\\p{L}+")){returntrue;}顺便说一句,String.matches尝试匹配整个字符串,因此不需要^、$

java - Spring 表达式语言 - Java 8 forEach 或列表中的流

是否可以在SpEL列表中使用stream或forEach?例如Listx=newLinkedList(Arrays.asList("A","AAB"));ExpressionParserparser=newSpelExpressionParser();StandardEvaluationContextcontext=newStandardEvaluationContext(x);parser.parseExpression("x.stream().map(x->x.replaceAll(\"A\",\"B\")).collect(Collectors.toList())").getVa

用于匹配带转义引号的引号字符串的 Java 正则表达式

我知道已经有很多像我这样的问题,但我没有找到适合Java的答案。所以我写了一个新问题。我有如下内容的文本文件:key1="Thisisa\"test\"textwithescapesusing'\\'characters";key2='Itmustworkwith\'single\'quotesand"double"quotes';我需要一个正则表达式来匹配双引号(或单引号)中的值。此正则表达式必须支持转义引号和转义反斜杠。正则表达式必须与Java标准模式/匹配器类一起使用。 最佳答案 试试这个正则表达式:'([^\\']+|\\(

java - 使用 Java 中的 Cron 表达式查找上次触发时间

Java中有没有一种方法可以从Cron表达式中找到“上次触发时间”?例如如果now=25-Apr-201010PM,并且cron表达式是01510?**(quartz),它应该返回25-Apr-201010:15AM。注意:我不关心我们是使用标准的cron表达式(如Unix和Quartz)还是不太流行的表达式,只要它们能为我获取正确的“上次触发时间”此外,它并不是字面意义上的“最后触发时间”,因为触发器可能没有触发,但从逻辑上讲,应该有一种方法可以告诉它最后一次触发的时间。 最佳答案 cron-utils是一个开源Java库,用于解