Java 为多重映射的一个特定实例重写toString()?

Java 为多重映射的一个特定实例重写toString()?,java,hashmap,tostring,Java,Hashmap,Tostring,我有一个ListMultimap Guava的实例,它由嵌套的HashMaps和相当复杂的对象组成——在打印HashMap时,有没有办法更改此实例的toString以自定义控制台输出?或者是生成一个新类(它是HashMap类的扩展)并重写toString方法的唯一方法,如下所示: class CustomizedListMultiMap extends ListMultiMap<myComplexDatatypeOne, myComplexDatatypeTwo> { //

我有一个ListMultimap Guava的实例,它由嵌套的HashMaps和相当复杂的对象组成——在打印HashMap时,有没有办法更改此实例的toString以自定义控制台输出?或者是生成一个新类(它是HashMap类的扩展)并重写toString方法的唯一方法,如下所示:

class CustomizedListMultiMap extends ListMultiMap<myComplexDatatypeOne, myComplexDatatypeTwo> {
    // overwriting toString
    public String toString() {
        // my custom implementation
    }
}
ListMultimap<datatypeOne, datatypeTwo> map = ArrayListMultimap.create();
多重映射的实例化如下所示:

class CustomizedListMultiMap extends ListMultiMap<myComplexDatatypeOne, myComplexDatatypeTwo> {
    // overwriting toString
    public String toString() {
        // my custom implementation
    }
}
ListMultimap<datatypeOne, datatypeTwo> map = ArrayListMultimap.create();

所以我认为第一个答案不适用?谢谢。

匿名课程怎么样:

Map<X, Y> map = new HashMap<X, Y>() {
    @Override
    public String toString() {
        // toString implementation here
    }
};

匿名类怎么样:

Map<X, Y> map = new HashMap<X, Y>() {
    @Override
    public String toString() {
        // toString implementation here
    }
};

您必须重写自定义类customizedHashMap中的toString方法。不能仅为类的一个实例自定义toString方法


我建议您使用首字母大写的类名

您必须重写自定义类customizedHashMap中的toString方法。不能仅为类的一个实例自定义toString方法


我建议您使用首字母大写的类名

我的印象是您有一个ListMultimap,您希望以类似于{a=[1,2,3]}的格式打印出来,与列表的长度相对应

最简单的方法可能是

Multimaps.transformValues(multimap, new Function<List<Bar>, Integer>() {
   public Integer apply(List<Bar> list) {
     return list.size();
   }
}).toString();

我的印象是你有一个ListMultimap,你想把它打印成{a=[1,2,3]}格式,对应于列表的长度

最简单的方法可能是

Multimaps.transformValues(multimap, new Function<List<Bar>, Integer>() {
   public Integer apply(List<Bar> list) {
     return list.size();
   }
}).toString();


哦,等等,谢谢你的回复,但我意识到我的地图类型实际上是一个多重地图,来自Guava图书馆。现在就编辑OP,我道歉@RyanYu你应该能够运用同样的想法。@arshajii:不,你不应该;多重映射的实现是最终的。Hmmmm,该项是用create方法实例化的,但不是正确的构造函数?@LouisWasserman哦,我不知道。我添加了另一个建议。哦,等等,谢谢你的回复,但我意识到我的地图类型实际上是一个来自Guava图书馆的多重地图。现在就编辑OP,我道歉@RyanYu你应该能够运用同样的想法。@arshajii:不,你不应该;多重映射的实现是最终的。Hmmmm,该项是用create方法实例化的,但不是正确的构造函数?@LouisWasserman哦,我不知道。我添加了另一个建议。您试图在元素类型的toString上而不是集合类型上进行哪些定制是您无法做到的?嗯,ListMultimap的值本身就是列表;我想知道这些值的长度。等等,澄清一下:你有ListMultimap还是ListMultimap?如果是前者,那么只需multimap.keys.toString就可以满足您的需要。后者!你能提出你以前的评论吗?哈哈在元素类型的toString上,而不是集合类型上,您试图做哪些定制是您不能做的?嗯,ListMultimap的值是列表本身;我想知道这些值的长度。等等,澄清一下:你有ListMultimap还是ListMultimap?如果是前者,那么只需multimap.keys.toString就可以满足您的需要。后者!你能提出你以前的评论吗?哈哈