【问题标题】:Check if List of untrimmed Strings contain trimmed String检查未修剪字符串列表是否包含修剪字符串
【发布时间】:2016-04-07 23:41:50
【问题描述】:

我们有一个字符串列表,它们的开头/结尾可能有空格

我们想检查这个列表是否包含一个明确修剪过的字符串,即listContainingUntrimmedStrings.contains(trimmedString)

是否有一种简洁的,最好是单行的方式来做到这一点,或者我们不能不遗余力地将未修剪的列表复制到修剪过的列表中,并对未修剪列表上的 / 循环执行包含检查,并对元素一对一/其他详细的解决方案?

【问题讨论】:

  • 您需要遍历列表并为每个元素调用 contains 方法。列表中的 contains 方法将返回 true,前提是它包含完全相同的字符串,但这不是您想要的。
  • @Stultuske:显然没有必要完全使用 Collection 接口中的 contains() 方法。我们有例如已经检查了 CollectionUtils/StringUtils 的可能性并尝试使用流,但到目前为止没有找到更好的解决方案。任务本身是微不足道的,问题是我们是否可以用更简洁的方式来完成它(它已经在循环的层次结构中,所以我们希望避免更多这样的事情)
  • @hammerfest - 我不确定使用带有 lambda 表达式的 Streams 是否会比使用 for 循环更快

标签: java string list collections


【解决方案1】:

您可以使用流操作以函数式风格做到这一点:

listContainingUntrimmedStrings.stream()
    .map(String::trim)                     // lazily apply trimming to each element in the list
    .anyMatch(trimmedString::equals)       // check if any of those elements equals your initial string (assuming that `trimmedString` is NOT NULL)

【讨论】:

  • 使用.anyMatch(trimmedString::equals)会短一点
  • 谢谢,这正是我们想要的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 2016-07-07
相关资源
最近更新 更多