wou*_*non 0 java hashmap concurrenthashmap
在GUI中显示帐户时,我需要显示主帐户(对于辅助帐户)每个主帐户可以有多个辅助帐户.
我试图在HashMap中保存主要帐户信息.因为,需要稍后检索.
保存时,我还需要保存二级帐户指令.因此,我需要使用key作为主帐户保存两个对象.
1) Secondary Account
2) Secondary Instruction.
Run Code Online (Sandbox Code Playgroud)
我为帐户和指令对象重写了equals和hashcode.
我试图使用主帐户哈希码作为键和值作为对象列表[2]
- 初始化
private static final Map<Integer, ArrayList<Object[]>> primaryToSecondaryAcct = new ConcurrentHashMap<Integer, ArrayList<Object[]>>();
Run Code Online (Sandbox Code Playgroud)
- 投入价值
final Object[] acctInstr = new Object[2];
acctInstr[0] = acct;
acctInstr[1] = instr;
if(primaryToSecondaryAcct.get(getExistingAccount().hashCode()) != null) {
primaryToSecondaryAcct.get(getExistingAccount().hashCode()).add(acctInstr);
} else {
final ArrayList<Object[]> acctInstrList = new ArrayList<Object[]>();
acctInstrList.add(acctInstr);
primaryToSecondaryAcct.put(getExistingAccount().hashCode(), acctInstrList);
}
Run Code Online (Sandbox Code Playgroud)
我想知道这是否正确,是否有更好的方法.你能建议吗?
代替:
Map<Integer, ArrayList<Object[]>>
Run Code Online (Sandbox Code Playgroud)
为什么没有
Map<Account, SecondaryInfo>
Run Code Online (Sandbox Code Playgroud)
目前你正在为密钥存储一个集合,你必须管理它,当你从它中拉出它时,迭代它等Map.我认为创建一个合适的抽象并委托给它更好.该抽象将在一个位置查看验证,迭代等,而不是每次访问时都要担心它Map.
记住 - 面向对象是告诉对象为你做事情,而不是向他们询问信息并自己做.
我会用Integer特定的Account对象替换你的帐户表示.否则你将不得不管理代表不同类型的大量整数,并且很容易将它们混合起来.键入它们(虽然使用一个简单的类)意味着您可以使用自动化工具轻松地进行重构,并轻松确定类型而无需使用命名约定.