如何在不使用collect方法的情况下使用Java 8 Stream API?

huangapple go评论107阅读模式
英文:

How to use Java 8 Stream API without collect method?

问题

我有一个需要解决的问题,我应该从一个雇员列表中查找第n个性别为男性的雇员,使用Java 8的流,如果找不到,返回一个空的Optional。

class Employee{
   private int id;
   private String name;
   private String gender;
   
  //getters and setters
}

以下是一个方法,它接受一个雇员对象的列表和一个整数n,其中n表示要返回的第n个男性雇员(如果存在)。

Optional<Employee> nthMaleEmployee(List<Employee> employees, int n){

}

以下是我对这个问题的解决方案,使用了Java 8的流和collect方法。

return employees.stream().filter((e)-> e.getGender().equalsIgnoreCase("male")).collect(Collectors.toList()).get(n-1);

是否有任何不使用collect方法的流解决方案?我的问题要求在不使用collect方法的情况下使用流。

英文:

I have a problem to solve where I should find the nth Employee whose gender is Male from a list of Employees using java 8 streams, if nothing found return Optional empty.

class Employee{
   private int id;
   private String name;
   private String gender;
   
  //getters and setters
}

Below is the method which accepts a list of Employee objects and integer n where n denotes the nth male employee that has to be returned if exists.

Optional&lt;Employee&gt; nthMaleEmployee(List&lt;Employee&gt; employees, int n){

}

Below is my solution for the question using java 8 streams and collect method.

return employees.stream().filter((e)-&gt; e.getGender().equalsIgnoreCase(&quot;male&quot;)).collect(Collectors.toList()).get(n-1);

Is there any solution with streams not using collect method? My problem statement is to use streams without using collect method.

答案1

得分: 2

使用skip方法跳过列表中的(n-1)个元素,然后使用findFirst方法可获取第n个元素。

英文:

Use the skip method to skip (n-1) elements in the list and findFirst method would give you the nth element.

huangapple
  • 本文由 发表于 2020年10月21日 04:20:58
  • 转载请务必保留本文链接:https://go.coder-hub.com/64452786.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定