1

假设我们有一个带有简单int 计数字段的 MyBean 类,以及像这样的 Guava 表;

Table<Integer, Integer, MyBean> table; // we can instantiate like HashBasedTable.create();

当我放置一个新的 MyBean 对象并且此位置在表中有一个现有的 MyBean 对象时,我想对字段求和。

table.put(1, 1, new MyBean(1)); 
table.put(1, 1, new MyBean(2)); // so what will be going on ?

实际上这是一个非常简单的案例,如果它们发生碰撞,我想处理复杂的对象。

4

1 回答 1

4

Table行为就像 a Map,即第二个put覆盖第一个。你需要的是某种Multimap. 已经有问题Multitable,投给它。

目前,您可以使用

Table<Integer, Integer, SomeCollection<MyBean>>

或一个

Map<SomePair<Integer, Integer>, MyBean>

我推荐后者,因为组合键比处理“多”的东西要简单得多。


如果你今天感觉很hacky,你甚至可以使用

Map<Long, MyBean>

只是不要告诉任何人是我提出的。并正确封装 hack,这样您就不会被某个 int 到 long 的自动转换所困扰。

于 2013-11-13T10:06:09.583 回答