Java Map,具有值属性的过滤器 [英] Java Map, filter with values properties

查看:134
本文介绍了Java Map,具有值属性的过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个

TreeMap resMap new TreeMap<String, Map<String, String>>(); 

我想过滤并保留值包含已知对的条目,让我们说('mike '=>'jordan'),并避免像下面这样的循环

I would like to filter and keep only entries that values contains a known pair, let's say ('mike' => 'jordan'), and avoid a loop like below

我的包含的库中是否有apache.commons和google.common过滤方法(可能会这样做)一个循环,但至少它不太详细

Is there in my included libraries apache.commons and google.common a filter method (that probably would do a loop too, but at least it's less verbose

for (Entry<String, TreeMap<String, String>> el : resMap.entrySet()){
    if (el.getValue().get("mike").equals("jordan")){
        //
    }
}


推荐答案

您可以使用Guava和谓词界面

You can use filters from Guava and the Predicate interface.

Predicate<T> yourFilter = new Predicate<T>() {
    public boolean apply(T o) {
        // your filter
    }
};

所以,简单的例子是:

Predicate<Integer> evenFilter = new Predicate<Integer>() {
    public boolean apply(Integer i) {
        return (i % 2 == 0);
    }
};

Map<Integer, Integer> map = new HashMap<Integer, Integer>();

Map<Integer, Integer> evenMap = Maps.filterValues(map, evenFilter);

这篇关于Java Map,具有值属性的过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆