gpt4 book ai didi

java - 在 Java 中查找 ArrayList 中满足条件列表的所有对象

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:27 24 4
gpt4 key购买 nike

举一个具体的例子,我有一个类City,如下所示:

public class City {
private String name;
private int total; // total population
private int men; // male population
private int women; // female population

// constructor and getters...
}

我想编写一个方法,它可以获取 City 对象列表和条件列表(totalmenwomen),并返回其中满足这些条件的所有对象。每个条件都有一个范围,因此我可以搜索总人口在 1000 到 2000 之间并且女性人口在 200 到 300 之间的所有城市。

我认为我们可以创建一个如下所示的类Criterion:

public class Criterion {
String crit;
int min;
int max;

public Criterion (String crit, int min, int max){
this.crit = crit;
this.min = min;
this.max = max;
}
}

然后我们可以将这些带有范围的 Criterion 对象的列表传递给该方法。这是解决这个问题的好方法吗?为了使用二分搜索,我需要首先排序什么?处理这个问题的总体思路是什么?

最佳答案

不要使任务过于复杂。您只需传递您的列表和 Predicate<T> 代表方法的标准。

示例:

List<City> findAll(List<City> cities, Predicate<City> predicate){
List<City> accumulator = new ArrayList<>();
for (City city : cities)
if(predicate.test(city))
accumulator.add(city);
return accumulator;
}

然后按如下方式调用:

findAll(cities, c -> c.getTotal() >= 1000 && c.getTotal() <= 2000);
findAll(cities, c -> c.getWomen() >= 200 && c.getWomen() <= 300);
...
...
...

关于java - 在 Java 中查找 ArrayList 中满足条件列表的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50184182/

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