gpt4 book ai didi

java - 使用 Java Streams 过滤对象的 ArrayList 以返回 String 类型的 ArrayList

转载 作者:行者123 更新时间:2023-12-02 18:44:17 26 4
gpt4 key购买 nike

我在 SO 上找不到确切的解决方案。我有一个Crowd类由 Crowd 组成对象,它是 People 类型的数组列表。 People是一个具有属性 String name, Double bankBalance, Integer numberOfCarsOwned 的类.

在我的人群类中,我有以下方法,我试图按以字母 P 开头的名称进行过滤,并返回 String 类型的数组列表。 :

  public ArrayList<String> filterByLetterP(){
ArrayList<String> filteredNames = this.crowd.stream()
.filter(name -> name.getName().contains("P"));
return filteredNames;
}

我的错误是:所需类型ArrayList<String>提供Stream<People>

注意:我的解决方案必须使用流。如何纠正我的解决方案以使其正常工作?

引用下面的信息。

People类定义:

public class People {

private String name;
private Double bankBalance;
private Integer numberOfCarsOwned;

public People(String name, Double bankBalance, Integer numberOfCarsOwned) {
this.name = name;
this.bankBalance = bankBalance;
this.numberOfCarsOwned = numberOfCarsOwned;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Double getBankBalance() {
return bankBalance;
}

public void setBankBalance(Double bankBalance) {
this.bankBalance = bankBalance;
}

public Integer getNumberOfCarsOwned() {
return numberOfCarsOwned;
}

public void setNumberOfCarsOwned(Integer numberOfCarsOwned) {
this.numberOfCarsOwned = numberOfCarsOwned;
}
}

Crowd类定义:

public class Crowd {

private ArrayList<People> crowd;

public Crowd() {
this.crowd = new ArrayList<>();
}

public ArrayList<People> getCrowd() {
return crowd;
}

public void setCrowd(ArrayList<People> crowd) {
this.crowd = crowd;
}

public void addPeopleToCrowd(People people){
this.crowd.add(people);
}

public ArrayList<String> filterByLetterP(){
ArrayList<String> filteredNames = this.crowd.stream()
.filter(name -> name.getName().contains("P"));
return filteredNames;
}
}

最佳答案

有几个问题需要解决:

  1. 您应该使用 String#startsWith 而不是 String#contains
  2. 您必须将Stream映射到People#name
  3. 您错过了收集Stream

按如下所示进行操作:

public List<String> filterByLetterP() {
List<String> filteredNames = this.crowd.stream()
.map(p -> p.getName())
.filter(s -> s.startsWith("P"))
.collect(Collectors.toList());
return filteredNames;
}

关于java - 使用 Java Streams 过滤对象的 ArrayList 以返回 String 类型的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67663682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com