概述
map()函数是Stream类中的一个方法,它表示函数式编程概念。简单来说,map()通过应用于函数将一个对象转换为另一个对象。这就是Stream.map(函数映射器)将函数作为参数的原因。例如,通过使用map()函数,您可以通过将Integer.valueOf()方法应用于输入列表上的每个String,将String列表转换为List of Integer。
您只需要一个映射函数将一个对象转换为另一个对象,然后,map()函数将为您进行转换。它也是一个中间Stream操作,这意味着您可以调用其他Stream方法,如过滤器,或者在此处收集以创建一系列转换。
现在,来进入过滤方法,它会根据您给出的条件过滤元素。例如,如果列表包含数字而您只需要偶数,则可以使用过滤方法仅选择可完全被2整除的数字。过滤方法会根据您提供的条件选择元素,这就是过滤器(Predicate条件)接受Predicate对象的原因,它提供了一个应用于条件的函数。
如果条件的计算结果为true,则选择该对象。否则,它将被忽略。与map类似,过滤器也是一个中间操作,这意味着您可以在调用过滤器后调用其他Stream方法。filter()方法也是惰性的,这意味着在调用reduce方法之前不会对它进行求值,它会在到达目标时立即停止。
如何在Java 8中使用Map和Filter
你需要一个很好的例子来理解这些概念。由于String和Integer是Java中最常见的数据类型,因此我选择了一个既简单又有趣的示例。我有一个String列表,例如{“1”,“2”,“3”,“4”,“5”,“6”}。我想处理这个列表,需要另一个只有偶数的整数列表。为了找到偶数,我首先需要将List of String转换为List of Integer。为此,我可以使用java.util.Stream类的map()方法。
但是,在此之前,我们需要一个Stream作为java.util.stream类中定义的map()。这一点并不困难,因为您可以从任何集合中获取流,例如List或Set,通过调用java.util.Collection接口中定义的stream()方法。映射(Function mapper)方法从技术上讲是一个函数,它是java.util.function.Function接口的一个对象。然后将此函数应用于Stream的每个元素,以将其转换为所需的类型。因为,我们需要将String转换为Integer,我们可以将Integer.parseInt()或Integer.valueOf()方法传递给map()函数。
然后map()将返回一个包含偶数和奇数的整数流。要选择偶数,我们可以使用filter()方法。它需要一个谓词对象,它在技术上是一个将对象转换为布尔值的函数。我们传递一个对象,它将返回true或false。然后,过滤器使用该信息将对象包含在结果流中。因此,为了仅包括偶数,我们调用filter(number -> number%2==0),这意味着每个数字将被除以2,如果没有余数,则将被选中。
这与我们在解决编码问题时使用的逻辑相同,以检查Java中给定数字是偶数还是奇数。但是,到目前为止,我们只有偶数整数的流 - 而不是整数列表,这就是我们需要使用它们的原因。因为我们需要一个List,所以我调用了collect(Collectors.toList()),它会将所有偶数累加到List中并返回。现在,我们需要通过类型推断获取该信息,因为我们已经通过将结果存储到List 中来指定该信息。
最后,附上代码如下:
最后
以上就是小巧方盒为你收集整理的java map collect_如何使用Java 8中的Map和Filter函数来转换和过滤对象的元素的全部内容,希望文章能够帮你解决java map collect_如何使用Java 8中的Map和Filter函数来转换和过滤对象的元素所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复