草庐IT

lambda表达式

全部标签

Java 8 lambdas 多个过滤器调用

使用filter(Predicatepredicate)时在Java8lambda表达式中调用,关于是否将所有Predicate放在一起,我有两种想法一次调用中的逻辑,或链接filter(Predicatepredicate)在适当的地方调用以提高可读性。我假设链接filter(Predicatepredicate)调用会很便宜,因为它们还没有遇到终止符,所以在可读性方面会出错,但我对我对Streams的了解不够自信。API以充分了解权衡是什么。借助于以下示例(考虑过于复杂的谓词),哪个实现更好:ListusingOneFilter或ListusingTwoFilters?import

java - 正则表达式以相反的顺序提取文本,直到字符的第三个实例

我有一个格式为XXXX_YYYY_YYYYYYY_YYYYYYZZZZ的字符串如何从后向提取字符串,直到第三个_(下划线)被命中。提取值:YYYY_YYYYYYY_YYYYYYZZZZ我试过这个((?:_[^_]*){3})$它似乎在开始时与额外的_一起工作,我可以可能在Java中将其删除。有什么方法可以让我在开头去掉_。 最佳答案 这个应该适合您的需求:[^_]+(?:_[^_]+){2}$DebuggexDemo 关于java-正则表达式以相反的顺序提取文本,直到字符的第三个实例,我

Java 8 Lambda 变量作用域

这个问题在这里已经有了答案:WhyshouldvariablesinsideaforEachloopnotbechanged?(1个回答)关闭6年前。我有2个代码示例:int[]idx={0};Listlist=newArrayList();list.add("abc");list.add("def");list.add("ghi");list.stream().forEach(item->{System.out.println(idx[0]+":"+item);idx[0]++;});正常工作。虽然这段代码有编译错误:intidx=0;Listlist=newArrayList();

java - 避免 VM 启动时使用的类使用 lambda 和流

通过java.lang.module我在类文档中阅读了以下内容:@implNote...isusedatVMstartupandsodeliberatelyavoidsusinglambdaandstreamusagesincodepathsusedduringstartup.使用此处避免的lambda和流的原因是什么?它们可能产生的影响是什么?插图将有助于更好地理解,但不是在这里寻求意见。 最佳答案 不依赖lambda和流(广泛使用lambda)有助于避免在VMBootstrap中进行冗余工作。这反过来又减少了启动时间和内存占用。

java - hibernate 条件中的表达式

假设我有一个带有数量字段和价格字段的持久类Item。有没有办法建立一个计算数量*价格总和的条件? 最佳答案 我认为您也可以使用SQL投影。它应该是这样的:session.createCriteria(Item.class).createAlias("item","i").setProjection(Projections.projectionList().add(Projections.groupProperty("i.id")).add(Projections.groupProperty("i.price")).add(Proje

java - 正则表达式 - 排除名称的单词列表

我正在尝试制作一个接受这个的正则表达式:只有a-z、0-9、_个字符,最小长度为3admin、static、my和www被拒绝。对于第一部分,我已经设法做到了:^[a-zA-Z0-9\\_]{3,}$但我不知道如何排除前面列出的单词。例如,这意味着:static是不允许的(当然),但是静态是允许的静态是允许的使用这个正则表达式:^(?!static|my|admin|www).*$效果不佳:它排除了statice(以及未授权词之后的所有内容)。您知道哪个正则表达式适合我的需要吗? 最佳答案 尝试这样的事情:^(?!static$|m

java - 用于拆分由 | 分隔的字符串的正则表达式当没有用双引号引起来时

我需要一个正则表达式来计算java中管道分隔字符串中的列数。列数据将始终用双引号引起来,否则将为空。例如:"1234"|"Name"||"Somedescriptionwith|||init"|"LastColumn"以上应计为5列,包括“名称”列后的一列空列。谢谢 最佳答案 这是一种方法:Stringinput="\"1234\"|\"Name\"||\"Somedescriptionwith|||init\"|\"LastColumn\"";//\_______/\______/\/\______________________

java - 比较数学表达式

这是我的情况:我有两个包含变量(x、y、z等)的数学表达式。我已经使用shuntingyardalgorithm将它们编译为后缀用于执行,现在我需要一种方法来测试它们在数学上是否相等。例子:x+5==5+xx*2==x+x4/(x/2)==8/x我最初的想法是只抛出几千个不同的随机输入,看看评估结果是否相同。我预见到这种方法的问题:精度问题、NaN情况和可能的溢出。所有的计算都是用Java的double类型完成的。有什么想法吗?:)编辑:由于这是一款休闲游戏,解决方案不需要完美,只要足够好即可! 最佳答案 对于您提供的示例表达式,您

java - 正则表达式:匹配任何非单词和非数字字符,除了

为了匹配任何非单词和非数字字符(特殊字符),我使用了这个:[\\W\\D]。如果我也想忽略一些具体字符,我应该添加什么?比方说,下划线。 最佳答案 首先你要知道\W等同于[^a-zA-Z0-9_]。因此,您可以将当前的正则表达式更改为:[\\W]这将自动处理\D。现在,如果你想忽略一些其他字符,比如&(下划线已经在\W中被排除),你可以使用否定字符类:[^\\w&] 关于java-正则表达式:匹配任何非单词和非数字字符,除了,我们在StackOverflow上找到一个类似的问题:

java - 在使用正则表达式之前如何清理输入?

我正在制作一个使用正则表达式解析用户输入的Java程序。例如,如果用户输入/meeats,它应该匹配/me并将其替换为.但是,Java没有正确匹配,因为/是正则表达式的特殊字符。如何使用转义符自动替换所有各种特殊的Java正则表达式字符?例如:/me变成\/me*变成\*[变成\[等等...之前它被放入Pattern.compile.这不是命令系统。我允许用户指定如何表示角色扮演Action。如果有帮助,这里是用户如何指定他们认为角色扮演Action的模型: 最佳答案 Supuhstar,我相信这就是您正在寻找的单线(请参阅onli