gpt4 book ai didi

java - 寻求一种有效的方法来生成我的 HashMap 实例

转载 作者:行者123 更新时间:2023-12-01 04:13:27 25 4
gpt4 key购买 nike

我有一个Person类:

public class Person{
private String name;
//pleaese think this 'id' simply as an attribute of Person, same as e.g. age, height
private long id;
public Person(String name, long id){
this.name = name;
this.id = id;
}
public String getName(){
return name;
}
public long getId(){
return id;
}
}

然后,我有一个 HashMap 实例,其中包含从服务器获取的多个 Person:

//key is String type, it is a unique name-like string assigned to each Person 
//value is a Person object.
HashMap<String, Person> personsMap = GET_PERSONS_FROM_SERVER();

然后,我有一个人员 ID 数组:

long[] ids = new long[]{1,2,3,4,5, …}

我需要生成另一个 HashMap,它只包含 id 在 ids 数组中列出的人员:

// Only the person whose id is listed in ids array will be in the following Map
Map<String, Person> personNeeded = … ;

如何以高效的方式获取personNeeded

最佳答案

如果 map 键与 ID 没有任何关系,那么没有比对 map 条目进行线性迭代更好的方法来找到拥有键的人。

首先构造一个ID集合数据结构,这样你就可以在恒定的时间内检查一个人的ID是否在列表中:

Set<Long> idSet = new HashSet<>();
for (long id: ids) idSet.add(id);

然后只需迭代条目:

HashMap<String, Person> personsById = new HashMap<>();
for (Map.Entry<String,Person> e : personsMap.entrySet()) {
String key = e.getKey();
Person val = e.getValue();
if (idSet.contains(val.getId()) personsById.put(key, val);
}

关于java - 寻求一种有效的方法来生成我的 HashMap 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19662737/

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