一个可能的解决方案是采用不同的设计。分子式由一堆元素以及这些元素的数量组成。因此,一个可能的解决方案是
MolecularFormula
类包装该信息,该信息基于
Map<Element, int>
。
一个可能的例子:
public class MolecularFormula
{
private Map<Element, int> elements = new HashMap<Element, int>();
//... Constructors etc
//A list to iterate through all values
public List<NElement> getElements()
{
List<NElement> retList = new ArrayList<NElement>();
foreach(Element e : elements)
{
retList.put(new NElement(e, elements.get(e));
}
return retList;
}
//To add something
public void add(Element e, int num)
{
if(elements.containsKey(e))
{
int newNum = elements.get(e) + num;
elements.remove(e);
elements.put(e, newNum);
}
else
{
elements.put(e, num);
}
}
}
这是匆忙拼凑在一起的,根本不是很有效,但它应该会给你一个可能的选择的想法。