假设我们有一个带有简单 int count 字段的MyBean类,以及像这样的Guava表;
Table<Integer, Integer, MyBean> table; // we can instantiate like HashBasedTable.create();
我想对count字段求和,当我放入一个新的MyBean对象时,这个位置在表中有一个现有的MyBean对象。
table.put(1, 1, new MyBean(1));
table.put(1, 1, new MyBean(2)); // so what will be going on ?
实际上这是一个非常简单的案例,我想在碰撞时处理复杂的对象。
答案 0 :(得分:4)
Table
的行为与Map
相似,即第二个put
会覆盖第一个Multimap
。你需要的是Multitable
。已经有Table<Integer, Integer, SomeCollection<MyBean>>
Map<SomePair<Integer, Integer>, MyBean>
投票给它。
目前,您可以使用
Map<Long, MyBean>
或
{{1}}
我推荐后者,因为组合键比处理“多”的东西更简单。
如果你今天感觉很酷,你甚至可以使用
{{1}}
请不要告诉任何人这是我的提议。并且正确地封装了hack,所以你不会被某些int咬到长时间的自动转换。