Java根据多个条件对Map取值

以下使用的是JDK8语法!!(后面还有一种不需要JDK8语法支持的方法)import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Main { public static void main(String args) { List\u0026lt;Map\u0026lt;String, Integer\u0026gt;\u0026gt; data = https://www.zhihu.com/api/v4/questions/34589173/new ArrayList/u0026lt;/u0026gt;(); data.add(map1()); data.add(map2()); data.add(map3()); System.out.println("a = 1"); data.stream() .filter(map -\u0026gt; map.get("a") == 1) .forEach(map -\u0026gt; System.out.println(map)); System.out.println("a = 1 \u0026amp;\u0026amp; b = 2"); data.stream() .filter(map -\u0026gt; map.get("a") == 1 \u0026amp;\u0026amp; map.get("b") == 2) .forEach(map -\u0026gt; System.out.println(map)); } private static Map\u0026lt;String, Integer\u0026gt; map1() { Map\u0026lt;String, Integer\u0026gt; map = new HashMap\u0026lt;\u0026gt;(); map.put("a", 1); map.put("b", 2); map.put("c", 3); return map; } private static Map\u0026lt;String, Integer\u0026gt; map2() { Map\u0026lt;String, Integer\u0026gt; map = new HashMap\u0026lt;\u0026gt;(); map.put("a", 2); map.put("b", 2); map.put("c", 3); return map; } private static Map\u0026lt;String, Integer\u0026gt; map3() { Map\u0026lt;String, Integer\u0026gt; map = new HashMap\u0026lt;\u0026gt;(); map.put("a", 1); map.put("b", 3); map.put("c", 2); return map; }}结果a = 1{a=1, b=2, c=3}{a=1, b=3, c=2}a = 1 \u0026amp;\u0026amp; b = 2{a=1, b=2, c=3}如果不要用JDK8的语法的话,也可以自己编写一个类似的import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Main { public static void main(String args) { List\u0026lt;Map\u0026lt;String, Integer\u0026gt;\u0026gt; data = https://www.zhihu.com/api/v4/questions/34589173/new ArrayList/u0026lt;/u0026gt;(); data.add(map1()); data.add(map2()); data.add(map3()); System.out.println("a = 1"); List\u0026lt;Map\u0026lt;String, Integer\u0026gt;\u0026gt; result = filter(data, new FilterFunction() { public boolean test(Map\u0026lt;String, Integer\u0026gt; map) { return map.get("a") == 1; } }); for (Map\u0026lt;String, Integer\u0026gt; map : result) { System.out.println(map); } System.out.println("a = 1 \u0026amp;\u0026amp; b = 2"); List\u0026lt;Map\u0026lt;String, Integer\u0026gt;\u0026gt; result2 = filter(data, new FilterFunction() { public boolean test(Map\u0026lt;String, Integer\u0026gt; map) { return map.get("a") == 1 \u0026amp;\u0026amp; map.get("b") == 2; } }); for (Map\u0026lt;String, Integer\u0026gt; map : result2) { System.out.println(map); } } private static Map\u0026lt;String, Integer\u0026gt; map1() { Map\u0026lt;String, Integer\u0026gt; map = new HashMap\u0026lt;\u0026gt;(); map.put("a", 1); map.put("b", 2); map.put("c", 3); return map; } private static Map\u0026lt;String, Integer\u0026gt; map2() { Map\u0026lt;String, Integer\u0026gt; map = new HashMap\u0026lt;\u0026gt;(); map.put("a", 2); map.put("b", 2); map.put("c", 3); return map; } private static Map\u0026lt;String, Integer\u0026gt; map3() { Map\u0026lt;String, Integer\u0026gt; map = new HashMap\u0026lt;\u0026gt;(); map.put("a", 1); map.put("b", 3); map.put("c", 2); return map; } public interface FilterFunction { boolean test(Map\u0026lt;String, Integer\u0026gt; map); } public static List\u0026lt;Map\u0026lt;String, Integer\u0026gt;\u0026gt; filter(List\u0026lt;Map\u0026lt;String, Integer\u0026gt;\u0026gt; data, FilterFunction filter) { List\u0026lt;Map\u0026lt;String, Integer\u0026gt;\u0026gt; result = new ArrayList\u0026lt;\u0026gt;(); for (Map\u0026lt;String, Integer\u0026gt; map : data) { if (filter.test(map)) { result.add(map); } } return result; }}


推荐阅读