使用表guava进行hashbasedTable

Nan*_*mar 5 java hash hashmap guava

我打算使用表guava进行3D哈希映射实现.我下载了,我可以导入文件.我的要求如下

我手中有下面的文件,我只需要相应地聚合文件,这将在下一步中显示.

A100|B100|3
A100|C100|2
A100|B100|5
Run Code Online (Sandbox Code Playgroud)

聚合部分将在下面

A100|B100|8
A100|C100|2
Run Code Online (Sandbox Code Playgroud)

我尝试使用下面的内容

Table<String,String,Integer> twoDimensionalFileMap= new HashBasedTable<String,String,Integer>();
Run Code Online (Sandbox Code Playgroud)

但这让我错了,我只想知道两件事

  1. 我只想知道,要在构造函数中传递的参数 HashBasedTable<String,String,Integer>()
  2. 如何初始化此表的行,列和值,就像我们为它所做的那样map.put(key,value).在类似的意义上,你们可以告诉我如何插入这个表的值?

Lou*_*man 27

番石榴贡献者在这里.

  1. 不要使用构造函数,使用HashBasedTable.create()工厂方法.(没有参数,或者expectedRowsexpectedCellsPerRow.)
  2. 使用table.put("A100", "B100", 5),就像Map使用两个键的除外.

  • @ user949300构造函数为private没什么错。在受保护的情况下,您可以“扩展HashBasedTable”,并且如果某天实现发生更改,您的类可能会中断。由于此类子类似乎没有任何好处,因此最好禁止它。当然,将类定为final也可以,但是工厂(与ctor不同)可以节省键入类型参数的时间。 (2认同)

Fra*_*eth 5

来自文档:

接口表

类型参数:

R - the type of the table row keys
C - the type of the table column keys
V - the type of the mapped values
Run Code Online (Sandbox Code Playgroud)

你的声明是对的.为了使用它,应该很容易:

Table<String,String,Integer> table = HashBasedTable.create();
table.put("r1","c1",20);
System.out.println(table.get("r1","c1"));
Run Code Online (Sandbox Code Playgroud)