gpt4 book ai didi

Java Multimap 搜索值

转载 作者:行者123 更新时间:2023-11-30 07:01:31 28 4
gpt4 key购买 nike

我有一个 Multimap 并且需要搜索值。看起来像这样

ListMultiMap<String, Person> pers =  ArrayListMultimap.create();
....
Person person = new Person();
person.setName(name);
peson.setAge(age);
person.setId(id);
...
pers.put(name, person);

我需要名字作为键,应该可以添加例如两个名字为“Bob”的人。 ID 应该是唯一的。

例如:

Name: Bob, ID:1
Name: Bob, ID:2

我知道如何从 map 中获取键“Bob”的值。但是我怎样才能只获得 ID 为 1 的 Bob 的值呢?

最佳答案

如评论中所述,get(String key) ListMultiMap的方法|将返回 List给定键的元素。由于您的 person.id不是key的一部分,不会对返回列表产生任何影响。

作为 I.K.在接受的答案中说,您可以简单地遍历返回的列表以获取具有给定 ID 的人。

然而,更适合的数据结构可能是 Guava Table ,这允许您拥有 2 个键(您也可以将 if 视为 Map 的一种 Map,或者在您的情况下为 Map<String,Map<Long, Person>>):

Table<String, Long, Person> personsByNameAndId = HashBasedTable.create();
Person bob = ...;
//put it in the table
personsByNameAndId.put(bob.getName(), bob.getId(), bob);

//lookup by name and ID
Person bobWithId1 = personsByNameAndId.get("Bob", 1l);

//get all Bobs
Collection<Person> allPersonsNamedBob = personsByNameAndId.row("bob").values();

//get person with ID=2 regardless of name
Person personWithId2 = personsByNameAndId.column(2l).values().iterator().next();

关于Java Multimap 搜索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29748182/

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