从地图

时间:2017-03-24 11:54:09

标签: java

我有以下方法返回地图。

private Map<String, FilterParam> retrieveFilter(Map<String, String> params) {

    Map<String, FilterParam> filterParams = new HashMap<>();


    for(Entry<String, String> e : params.entrySet()){
        if(someOthermap.containsKey(e.getKey())){
            filterParams.put(e.getKey(), parser.parse(e.getKey(), e.getValue()));

        }
    }

    return filterParams;
}

public class FilterParam {

public FilterParam parse(String key, String value){

    FilterParam filterParam = new FilterParam();
    filterParam.setKey(key);

    if(value.length() > 1 && value.startsWith("$")){
        filterParam.setOperator(Operator.PROCESS);
        filterParam.setValue(value.substring(1));

    }else{
        filterParam.setOperator(Operator.QUIT);
        filterParam.setValue(value);
    }

    return filterParam
    }
}

我的问题是,当filterparams返回值时,它的值类似于

  

{name=com.test.FilterParam@15db9742}

这是正确的,但我想获得地图的实际值,如

  

(name = Chuna)

其中key = name和value = Chuna

这是可能的如果我将方法解析(String,String)的返回类型从FilterParam更改为String,那么我可以很容易地得到它的值。

在这里,我的要求是说不要改变返回类型,而是从map而不是object获取值。

我很困惑如何获得价值!请有人指导我。

1 个答案:

答案 0 :(得分:1)

您需要覆盖toString()类的FitlerParam方法。

默认的toString()实现以十六进制为基础连接包名,类名,@和对象的hashCode,你不需要它,所以你需要提供自己的实现。