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; }}
推荐阅读
- 江苏高考■江苏省发布《2021年普通高校招生考试安排和录取工作实施方案》
- 乌鲁木齐再迎大规模降雪多个航班取消
- 创新经营|
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 疾控|南通市疾控中心召开干部大会
- 为啥和自己接触过的女孩子都很快就有男朋友了啊
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- |苏州科技城新增160多个非机动车停车位!
- 出租汽车|徐州将开展市区出租汽车行业“百日整治”
- 根据ip地址能查到某一个电脑或手机的具体位置么
