Java 将MultiLabelDataset转换为Guava Multimap以进行打印/检查

Java 将MultiLabelDataset转换为Guava Multimap以进行打印/检查,java,string,apache,output,guava,Java,String,Apache,Output,Guava,我正在使用以下程序: public static void main(String[] args) throws Exception { String input = args[0]; InputStream is = new BufferedInputStream( new FileInputStream( input ) ); toMultiLabelDataset(is); is.close(); } public static MultiLabelD

我正在使用以下程序:

public static void main(String[] args) throws Exception
{
    String input = args[0];

    InputStream is = new BufferedInputStream( new FileInputStream( input ) );

    toMultiLabelDataset(is);
    is.close();
}

public static MultiLabelDataset<String, String> toMultiLabelDataset(InputStream is) throws IOException
{
    List<RelationAndMentions> relations = toRelations(is, true);
    MultiLabelDataset<String, String> dataset = toDataset(relations);

    return dataset;
}
正如您所看到的,它使用了MultiLabelDataset形式的数据结构,我想以人类智能的形式打印该野兽的内容。根据我之前的搜索,我可能会使用ApacheStringUtils或GoogleGuava库,对吗?我该怎么做呢

我的猜测是,这些库中有一个等效的数据结构,它需要,我只需要确定它是什么,复制MultiLabelDataset的内容,然后打印?这合理吗

编辑 ^不是那样的

假设是这样的话,那么它和番石榴很相似,你可以很容易地将其转化。但是,这种转换既不比直接转换为字符串更简单,也不比直接转换为字符串更智能。唯一的优点是,此后您可以使用一个sane Java类,该类具有许多有用的方法,并且可以与其他Java类很好地协同工作

整个转换像往常一样进行,但是您需要一些东西来迭代键。假设唯一的实现是LabeledLDataSet,那么很容易:

Multimap<String, String> toMultimap(MultiLabelDataset<String, String> dataset) {
    Multimap<String, String> result = HashMultimap.create();
    for (Item key : ((LabeledLDADataset) dataset).items()) {
        result.putAll(key.toString(), dataset.getLabels(key));
    }
    return result;
}

是 啊就是这样!所以,在这一点上,我想做的就是以一种干净的方式打印内容,看看里面有什么,但可以肯定的是,我以后会想做更多。如果不太麻烦的话,也许你可以告诉我一种快速而肮脏的方法,把它打印成字符串或w/e,也许以后我可以通读多重映射documentation@S.Matthew_English这些信息属于问题,而不是答案。除非你想训练我们使用谷歌我不确定到底是什么问题。。。当然可以使用两个嵌套循环将其转换为某些内容,但值得吗?冒着显得愚蠢的风险,我想LabeledDataset指的是MultiLabelDataset,但什么是引用?我编辑了我的原始帖子来演示我失败的尝试。@S.Matthew_English对不起,标识符。。。我觉得这个类名相当可怕,所以我想避免再次引用它。并且是Javadoc中列出的唯一子类。如果演员阵容失败,那么你就不走运了,你必须弄清楚你到底上了什么课。
Multimap<String, String> toMultimap(MultiLabelDataset<String, String> dataset) {
    Multimap<String, String> result = HashMultimap.create();
    for (Item key : ((LabeledLDADataset) dataset).items()) {
        result.putAll(key.toString(), dataset.getLabels(key));
    }
    return result;
}