【问题标题】:capitalizing first letters in listArray without producing void将 listArray 中的首字母大写而不产生 void
【发布时间】:2020-07-28 22:30:32
【问题描述】:

我正在尝试将List 中每个单词的首字母大写。目前,我得到一个“此处不期望 Lambda 表达式”,并且我被告知我无法将字符串转换为 void,我不想这样做。我正在尝试将arrayList中每个字符串的第一个字母大写;如果不选择+大写第一个字符(作为字符或作为子字符串)然后添加单词的其余部分,我无法确定一种方法。

public List<String> capitalizeAllWords(ArrayList<String> words) {
   return words.stream().collect(Collectors.toList().forEach(word ->
     word.substring(0,1).toUpperCase() + word.substring(1))
   );
  }

【问题讨论】:

  • 您必须在收集之前进行转换。 Collectors.toList() 给你一个 Collector,你不能在上面调用 forEach。 (word -&gt; word.substring(0,1).toUpperCase() + word.substring(1)) 被分配给map)。你根本不需要打电话给forEach
  • (之前的复制链接不正确。字符串中的单词大写与字符串列表中的字符串大写是不同的问题。)

标签: java arraylist lambda


【解决方案1】:

在收集之前使用.map

public List<String> capitalizeAllWords(ArrayList<String> words) {
   return words.stream()
       .map(word -> Character.toUpperCase(word.charAt(0)) + word.substring(1))
       .collect(Collectors.toList());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2011-11-13
    • 2021-07-29
    • 2011-05-14
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多