Java根据多个条件对Map取值( 二 )
回答追问:import java.util.*;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()); // 构造筛选条件,以下 select_a, select_b 为 a 和 b 选择的值。 List/u0026lt;Filter/u0026gt; filters = new LinkedList/u0026lt;/u0026gt;(); if (!select_a.equals("全部")) { filters.add(new Filter() { public boolean test(Map\u0026lt;String, Integer\u0026gt; map) { return map.get("a") == select_a; } }); } if (!select_b.equals("全部")) { filters.add(new Filter() { public boolean test(Map\u0026lt;String, Integer\u0026gt; map) { return map.get("b") == select_b; } }); } // 进行筛选,各条件之间用And连接。 List\u0026lt;Map\u0026lt;String, Integer\u0026gt;\u0026gt; result = new ArrayList\u0026lt;\u0026gt;(); FOR: for (Map\u0026lt;String, Integer\u0026gt; map : data) { for (Filter filter : filters) { if (!filter.test(map)) { continue FOR; } } result.add(map); } // 打印数据 for (Map\u0026lt;String, Integer\u0026gt; map : result) { System.out.println(map); } } public interface Filter { boolean test(Map\u0026lt;String, Integer\u0026gt; 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; }}
■网友
题主的这种操作比较像关系数据库的查询,如果题主用的是关系型数据库的话,直接写SQL语句查询就可以,没有必要全取出来再自己过滤。
推荐阅读
- 江苏高考■江苏省发布《2021年普通高校招生考试安排和录取工作实施方案》
- 乌鲁木齐再迎大规模降雪多个航班取消
- 创新经营|
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 疾控|南通市疾控中心召开干部大会
- 为啥和自己接触过的女孩子都很快就有男朋友了啊
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- |苏州科技城新增160多个非机动车停车位!
- 出租汽车|徐州将开展市区出租汽车行业“百日整治”
- 根据ip地址能查到某一个电脑或手机的具体位置么
