gpt4 book ai didi

java从对象列表中获取子列表

转载 作者:行者123 更新时间:2023-11-29 06:20:32 26 4
gpt4 key购买 nike

有一个依赖列表

依赖包含

String emp_Id, name etc,

List<Dependent> dependentList;

dependentList包含员工的所有依赖信息。

如何通过提供 emp_Id 获取家属名单?

例如,一名员工将有 2 或 3 名家属。

好的,我不想遍历它。

我尝试使用比较器对列表进行二进制搜索,但它没有返回所需的数据。

我已经将遍历员工列表...随后我应该了解特定员工的依赖...什么是最佳且高效的解决方案?

最佳答案

只有当列表根据比较器排序时,二分查找才有效。对于未排序或根据其他条件排序的列表,您必须对其进行过滤。

  • 循环遍历列表并在循环体中做任何你想做的事情
  • 或者使用库中的过滤器功能

如果要过滤,那我推荐Google Collections (或 Google Guava ,它是 Google 集合的超集):

Collection<Dependent> filtered = Collections2.filter(dependentList, new Predicate<Dependent>() {
public boolean apply(Dependent from) {
return from != null && from.getId().equals(id_so_search_for);
}
}

当然,您不限于.equals() , 但可以根据所需的任何操作进行匹配(例如通过正则表达式)。

如果搜索一种数据严重超过搜索任何其他类型的数据,则将它们存储在 Map<kind-of-id, Dependent> 中可能也是一个不错的选择。您仍然可以使用 Map.values() 检索所有存储对象的集合。 .

如果一个键映射到多个项目,则要么使用 Map<kind-of-id, Collection<Dependent>>或者(更好)考虑使用现有的 Multimap 功能:com.google.common.collect.Multimaporg.apache.commons.collections.MultiMap (注意 Apache Commons 没有这个的通用版本)。

关于java从对象列表中获取子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3228193/

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