Java 将表guava用于hashbasedTable

Java 将表guava用于hashbasedTable,java,hash,hashmap,guava,Java,Hash,Hashmap,Guava,我计划使用表guava实现3D散列图。我下载了,我可以导入文件。我的要求如下 Table<String,String,Integer> twoDimensionalFileMap= new HashBasedTable<String,String,Integer>(); 我手上有下面的文件,我只需要相应地聚合文件,这将在下一步中显示 A100|B100|3 A100|C100|2 A100|B100|5 下面是聚合部分 A100|B100|8 A100|C100|2

我计划使用表guava实现3D散列图。我下载了,我可以导入文件。我的要求如下

Table<String,String,Integer> twoDimensionalFileMap= new HashBasedTable<String,String,Integer>();
我手上有下面的文件,我只需要相应地聚合文件,这将在下一步中显示

A100|B100|3
A100|C100|2
A100|B100|5
下面是聚合部分

A100|B100|8
A100|C100|2
我试着使用下面的

Table<String,String,Integer> twoDimensionalFileMap= new HashBasedTable<String,String,Integer>();
表twoDimensionalFileMap=新的HashBasedTable();
但这让我犯了个错误,我只想知道两件事

  • 我只想知道,
    HashBasedTable()的构造函数中要传递的参数
  • 如何初始化该表的行、列和值,就像我们对映射所做的那样,它是
    map.put(key,value)
    。在类似的意义上,你们能告诉我如何插入这个表的值吗

  • 这里是番石榴

  • 不要使用构造函数,请使用
    HashBasedTable.create()
    factory方法。(不带参数,或带有
    expectedRows
    ExpectedCellsError
  • 使用
    table.put(“A100”,“B100”,5)
    ,就像
    地图一样,除了有两个键
  • 从文件:

    接口表

    类型参数:

    R - the type of the table row keys
    C - the type of the table column keys
    V - the type of the mapped values
    
    你的声明是正确的。为了使用它,应简单如下:

    Table<String,String,Integer> table = HashBasedTable.create();
    table.put("r1","c1",20);
    System.out.println(table.get("r1","c1"));
    
    Table Table=HashBasedTable.create();
    表1.put(“r1”、“c1”、20);
    System.out.println(table.get(“r1”、“c1”);
    
    使用以下内容的示例:

    @测试
    公共无效番石榴表示例(){
    随机r=新随机数(3000);
    Table Table=HashBasedTable.create();
    表.推杆(1,“肮脏50”,新训练(r.nextLong());
    表.推杆(1,“Fran”,新训练(r.nextLong());
    表.推杆(1,“七”,新训练(r.nextLong());
    表.推杆(1,“Murph”,新训练(r.nextLong());
    表2.put(1,“Ryan”,新训练(r.nextLong());
    表.推杆(1,“金刚”,新训练(r.nextLong());
    表1.put(2,“肮脏的50”,新训练(r.nextLong());
    表.推杆(2,“Fran”,新训练(r.nextLong());
    表.推杆(2,“七”,新训练(r.nextLong());
    表.推杆(2,“Murph”,新训练(r.nextLong());
    表1.put(2,“Ryan”,新训练(r.nextLong());
    表.推杆(2,“金刚”,新训练(r.nextLong());
    //对于每行键
    for(整型键:table.rowKeySet()){
    logger.info(“人:+键);
    对于(条目行:table.row(key).entrySet()){
    logger.info(“训练名称:“+row.getKey()+”表示“+row.getValue().getElapsedTime()”的运行时间);
    }
    }
    }
    
    感谢各位提供的信息。。。我确实试过了,效果很好。。。。我只是想知道我们是否能够根据value参数对这个表进行降序排序。。。。有没有办法做到这一点。。。如果是这样,请与我分享。。这对我来说真的很有用。。,。谢天谢地,如果使用基本构造函数失败了,这可能是一个次要的代码味道,但我知道有时候事情必须这样做。但是,至少,所说的构造函数应该受到
    保护
    ,这样天真的用户就会被迫使用工厂。@user949300构造函数是私有的,这没什么错。有了受保护的类,您可以
    扩展HashBasedTable
    ,如果有一天实现发生变化,您的类可能会崩溃。因为这样的子类似乎没有什么好处,所以最好禁止它。当然,将类设置为final也可以,但是工厂(与ctor不同)可以节省键入类型参数的时间。private也可以。我的意思是,如果构造函数在基本情况下不能真正工作,那么它就不应该是公共的。@maaartinus“但是工厂可以节省您键入类型参数的时间”-这不再是自Java 7以来的有效原因