【发布时间】:2012-06-24 23:59:16
【问题描述】:
我有一个
TreeMap resMap new TreeMap<String, Map<String, String>>();
我想过滤并只保留值包含已知对的条目,比如说 ('mike' => 'jordan'),并避免像下面这样的循环
在我包含的库 apache.commons 和 google.common 中是否有一个过滤器方法(这可能也会做一个循环,但至少它不那么冗长
for (Entry<String, TreeMap<String, String>> el : resMap.entrySet()){
if (el.getValue().get("mike").equals("jordan")){
//
}
}
【问题讨论】:
-
你需要某种 DotNet 在 Java 中的 LINQ 等价物...
-
为什么要避免循环?你使用的任何东西都像是为你使用了一个循环。
-
次要评论:在等号中切换顺序,因为 get("mike") 可能返回 null。即
if ("jordan".equals(el.getValue().get("mike")) -
@PeterLawrey,“你使用的任何东西都像是为你使用循环。”那是毫无意义的争论。这个类比可能有助于理解为什么会这样:“我想避免 goto 指令。$lang 是否支持正确的循环?” “你为什么想要循环?无论如何,他们很可能在内部使用 goto。”像这样,你可以一直到原始位。
-
@missingfaktor 避免使用
goto的原因有很多,但因为不喜欢它们而避免使用它们并不是其中之一。