【发布时间】:2014-03-02 15:29:14
【问题描述】:
如何在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<Drug, List<SideEffect>>。或番石榴Multimap<Drug, SideEffect>。Map<Drug, SideEffect[]>也是可能的,但数组是固定长度的。你是怎么测试的? -
@JBNizet 编译器不允许在
<K, V[]>中使用 V[] -
向我们展示真实代码。 V 不是一个类。
Map<Drug, SideEffect[]>是一个有效的声明(前提是 Drug 和 SideEffect 是现有的类)。 -
我已经删除了源代码......它在我的实现中不起作用(它一定是有问题的)。
-
下次你在这里提问时,贴出你尝试过的代码。这样我们至少可以解释你做错了什么。
标签: java arrays list dictionary