gpt4 book ai didi

java - Java 中的字典,其值为数组

转载 作者:行者123 更新时间:2023-12-02 06:07:52 25 4
gpt4 key购买 nike

如何在Java中设计这种类的实现?在某种程度上:

<K, V[]>

假设我们有一个药物数据库,我们想将其所有相应的副作用添加到其 V[] 中,其中 V[] 是副作用列表(可能是字符串列表)?

我已经尝试过<K, V[]> ,但没有成功。可能是我的实现有问题。我不知道如何设计这样的数据结构。请帮忙,谢谢。

<小时/>

第一次尝试:

我初始化了一小段代码:

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public class DrugDatabse
{
private Drug[] listOfDrugs;
private class Drug<K, List<V>> implements Map, Serializable
{
private Map<K, List<V>> dictionary = new Map<K, List<V>>();
private List<V> sideEffects = new List<V>();

private Drug(K name, V sideEffects)
{
}
}
}

看来这不是一个好的开始。

<小时/>

第二次尝试:

药物数据库.java:

import java.util.List;
import java.util.Map;
import java.util.HashMap;

public class DrugDatabase
{
private Map<Drug, List<SideEffect>> map = new HashMap<Drug,
List<SideEffect>>();

public DrugDatabase(Drug name, SideEffect se)
{
map.put(name, se);
}

public SideEffect add(Drug name, SideEffect se)
{
map.get(name).add(se);
}

public List<SideEffect> getSideEffects(Drug name)
{
return map.get(name);
}
}

药物.java:

public class Drug
{
private String name;
public Drug(String name)
{
this.name = name;
}
}

SideEffect.java:

import java.util.List;
import java.util.ArrayList;

public class SideEffect
{
private List<String> se = new ArrayList<String>();

public SideEffect(String content)
{
se.add(content);
}
}

最佳答案

使用:

Map<K, List<V>>

或使用 Guava 和:

Multimap<K, V>

Guava 的实现优势是你不需要担心不存在的键;而对于前者,您必须自己创建一个空的 List<V>对于每个新 key 。

Guava 的 Multimap 的另一个优点是您拥有 .containsValue()方法将查看所有 List<V>如果任何列表中的元素存在,则为条目​​。

简而言之,使用 Guava 。 Link to Multimap javadoc .

编辑:如果您有许多药物常见的副作用,您也可以看看 Guava 表。

关于java - Java 中的字典,其值为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22129523/

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