从非常大的对象数组列表中查找所需数据

Posted

技术标签:

【中文标题】从非常大的对象数组列表中查找所需数据【英文标题】:Finding Required Data From A Very Large ArrayList Of Objects 【发布时间】:2020-09-19 06:07:58 【问题描述】:

一个 Arraylist 包含 190,000 个结构对象

 
   srno: 51,
   health_facility_name: "keeraipatti",
   address: "Keeraipatti building",
   street: "keeraipatti",
   landmark: "keeraipatti",
   locality: "keeraipatti",
   pincode: 636903,
   landline_number: "NA",
   latitude: 12.005075,
   longitude: 78.533949,
   altitude: 394.6894,
   facility_type: "SubCentre",
   state_name: "Tamil Nadu",
   district_name: "Dharmapuri",
   taluka_name: "Harur",
   block_name: "Harur"
 

我使用 html Gelocation API 获取用户的当前位置,并通过 javascript 将用户的纬度和经度发送到端点(window.location.href='......')

@GetMapping("/nearHospitals/lattitude/longitude")
public String nearHospitalsHandler(@PathVariable("lattitude")double lattitude, 
                                   @PathVariable("longitude") double longitude)

    //call service method to get List of 20 Hospital Objects closest to the user's 
    //location and put it inside the Modal for the view to render
    //what should be the logic here 
    return "nearHospitalsView";

现在我有一个方法可以计算医院(ArrayList 中的对象)与用户当前位置之间的距离。

现在我应该如何进一步,找到最近的 20 家医院并返回列表的有效方法是什么。

【问题讨论】:

您是否已经验证过幼稚的方法 - 性能方面 - 不够? 你不使用任何数据库来存储数据吗? 查看 Dijkstra 最短路径算法及其工作原理。它可能会帮助你。 @Turing85 是的,使用常规的幼稚方法需要 2-3 分钟 @Rono 我正在使用来自 API 端点的对象 【参考方案1】:

为了有效地找出最近的“x”家医院,我建议您使用自定义优先级队列。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于从非常大的对象数组列表中查找所需数据的主要内容,如果未能解决你的问题,请参考以下文章

GCP:与硬编码值相比,从数组中选择查询具有非常大的流程数据要运行

如何从对象数组中获取图像的URL

比较三个非常大的数组并创建一个新对象

R列表/数据帧到JSON对象数组

Numpy

从具有相同属性的数组中查找和删除对象