当前位置: 首页 > 知识库问答 >
问题:

用Java中的流对字符串中的所有字母进行计数/排序(忽略数字)

酆景辉
2023-03-14

我的朋友说这是不可能的,但我相信她错了。假设我有一个由字母数字字符组成的字符串列表:

AAA1、aaaa、aaa、a12、a5、44a44、3232aa

我想写一个流,它将:

    < li >查看每个单独的元素 < li >识别并计算所有字母(忽略数字) < li >如果数字是奇数,则执行x < li >如果数字是偶数,请按y

她说这将导致流中的终端操作(计数),这是不可能的。我在网上看了看,开始后,我的想法是过滤掉所有偶数会更容易。我以这个结尾:

List<String> evaluateStrings = validChars.stream().filter(x -> x.replaceAll("\\d","").length() %2 == 0).collect(Collectors.toList());

但这甚至不能过滤掉所有的数字。

对此有什么想法吗?

共有1个答案

段哲圣
2023-03-14

尝试使用map函数删除这些数字。

我强烈建议在映射之前进行过滤以检查空字符串,否则可能会出现空指针异常(NPE)。我非常强调在使用流和转换数据时过滤掉空值,这将在将来从不同的源开始流传输不同的数据类型时为您节省很多麻烦。

List<String> evaluateStrings = validChars
.stream()
// transform the data in the stream, remove numeric chars
.map(x -> x.replaceAll("\\d","")
// Filter to allow even length strings
.filter(x -> x.length() %2 == 0)
// Collect the transformed and filtered results.
.collect(Collectors.toList());
 类似资料:
  • 问题内容: 我在排序包含整数的字符串时遇到问题。如果使用下面的代码,我将进行排序:1some,2some,20some,21some,3some,一些 但是我希望将其排序为:1some,2some,3some,20some,21some,一些 我怎样才能做到这一点? 谢谢! 问题答案: 这是有关如何执行此操作的独立示例(未特别优化): 输出量 说明 该示例使用一个常数来推断数字是否位于的起始位置。

  • 问题内容: 有一些值,例如AB,A012B,CD,1、10、01、9我必须对其进行排序,输出的输出应为01、1、9、10,A012B,AB,CD可以使用任何试图使用collection的collection .sort函数,但将所有内容都视为字符串并像01,1,10,9,A012B,AB,CD一样打印,这不是我的要求…请帮助 问题答案: //捕鱼技术 //不够??? //这是鱼

  • 问题内容: 有没有一种简单的方法可以在Python中按字母顺序对字符串中的字母进行排序? 因此对于: 我想返回: 问题答案: 你可以做:

  • 问题内容: 允许用户使用字符串数组进行演奏。他们可以将字符串添加到数组中,从数组中删除字符串,在数组中搜索字符串,最终他们将能够对数组进行排序。排序使我很困惑。我尝试了几种不同的方法。第一种方法是将数组转换为ArrayList并使用Collections对ArrayList进行排序,然后将其转换回静态类数组。没用 我尝试的第二种方法是遍历数组,并尝试仅对用户添加的字符串进行排序,而不是对数组中的所

  • 问题内容: 我必须读取字符串并仅使用for循环输出每个字母的频率。讲师暗示我需要使用两个循环,并向我们提供了以下代码: 编辑: 我想我会死于这个问题,并发布一年前找到的解决方案,原因是该问题的点击率很高。 问题答案:

  • 问题内容: 我想按字母顺序对JAVA中的字符串进行排序,如下所示:AaBbCcDdEeFfGg之后是大写字母和小写字母。例如,如果我把AbaC退还给我AabC,谢谢! 问题答案: 如果先将字符放入数组中,则可以使用进行此操作。(为了使用不区分大小写的自定义比较器,它必须是对象数组,而不是基元。)