Java String包含双面

时间:2017-10-27 15:41:47

标签: java string lambda contains method-invocation

我创建了以下lambda来表示BiPredicate。

(s1, s2) -> s1.getArtist().contains(s2.getArtist()) || s2.getArtist().contains(s1.getArtist())

现在我想知道是否有办法让这个更简洁,可能是通过使用方法调用或其他方法。我宁愿不创建额外的变量并保持一个单行,但如果它们有意义,我仍然愿意接受其他解决方案。

1 个答案:

答案 0 :(得分:0)

一个'更快'的例子 - 我选择了特殊的字符串来测试,因为java contains方法已经检查了长度,这使得这种方法和你的方法基本相同,如果字符串长度不同(一个{在检查第一个参数的长度较短后,基本上立即切断{1}}。此外,由于contains之后的快捷方式发现它不再是真的,我只是在最后才让它们有所不同。它们都是非常长的字符串,你不可能在现实世界中遇到这样的字符串。

这种方法的速度提高了2倍,因为你只进行了两次全面检查而且只进行了一次,但差异可以忽略不计,在实际基准测试中它会更小。而且弦乐是挑选的,因为差异是最大的可能,所以......

总结:如果你愿意的话它很好,但实际上对我来说这个版本看起来更干净。

contains