Java 如何使用Guava过滤多值地图数组
我有一个包含映射的数组。我想使用map对象内部的一些(多个)键和值来过滤数组。例如,其中ID>1,名称为“cc”(key>1,名称为“cc”) 我如何在Java中做到这一点? 我已经导入了包含Collections2的Guava库来过滤数组。 但是,我没有发现任何在数组中过滤Map对象的示例 以下是我的一些示例代码:Java 如何使用Guava过滤多值地图数组,java,android,guava,android-guava,Java,Android,Guava,Android Guava,我有一个包含映射的数组。我想使用map对象内部的一些(多个)键和值来过滤数组。例如,其中ID>1,名称为“cc”(key>1,名称为“cc”) 我如何在Java中做到这一点? 我已经导入了包含Collections2的Guava库来过滤数组。 但是,我没有发现任何在数组中过滤Map对象的示例 以下是我的一些示例代码: List<Map<String, Object>> baseList = new ArrayList<>(); Map
List<Map<String, Object>> baseList = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("ID", 1);
map1.put("Name", "aa");
baseList.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("ID", 2);
map2.put("Name", "bb");
baseList.add(map2);
Map<String, Object> map3 = new HashMap<>();
map3.put("ID", 3);
map3.put("Name", "cc");
baseList.add(map3);
List<Map<String, Object>> filteredList = new ArrayList<>();
filteredList = Collections2.filter() ???
List baseList=new ArrayList();
Map map1=新的HashMap();
地图1.放置(“ID”,1);
map1.put(“名称”、“aa”);
基本列表。添加(map1);
Map map2=新的HashMap();
map2.put(“ID”,2);
map2.put(“名称”、“bb”);
添加(map2);
Map map3=新的HashMap();
map3.put(“ID”,3);
map3.put(“名称”、“抄送”);
添加(map3);
List filteredList=新建ArrayList();
filteredList=Collections2.filter()???
我想用一种ID>=1和名称“cc”
进行筛选,它将生成一个包含如下映射对象的数组:[{ID=1,NAME=“aa”},{ID=2,NAME=“bb”}]
有人能帮忙吗?我不知道你需要番石榴做什么。我会用以下方法来做:
List<Map<String, Object>> filteredList = baseList.stream()
.filter(map -> map.entrySet().stream()
.anyMatch(e -> e.getKey().equals(1L) && e.getValue().equals("cc")))
.collect(Collectors.toList());
List filteredList=baseList.stream()
.filter(map->map.entrySet().stream())
.anyMatch(e->e.getKey().equals(1L)和&e.getValue().equals(“cc”))
.collect(Collectors.toList());
您使用Java 8吗?你可以做:
List<Map<String, Object>> filteredList = maps.stream()
.filter(map -> (Integer) map.get("ID") >= 1 && !"cc".equals(map.get("Name")))
.collect(Collectors.toList());
没有列表。过滤器
,请参阅,因此只提供集合
界面
你真的需要地图列表而不是Map
(或者Map
)吗?然后你可以做:
final Map<Integer, String> map = ImmutableMap.of(
1, "aa",
2, "bb",
3, "cc");
final Map<Integer, String> filteredMap = Maps.filterEntries(map,
e -> e.getKey() >= 1 && !"cc".equals(e.getValue()));
final Map=ImmutableMap.of(
1、“aa”,
2、“bb”,
3、“cc”);
final Map filteredMap=Maps.filterEntries(映射,
e->e.getKey()>=1&!“cc.”等于(e.getValue());
你对Collections2.filter()的解释对我解释得很好。谢谢我知道Java8Lambda过滤,但这不是我需要的。但是,谢谢你的帮助。
final Map<Integer, String> map = ImmutableMap.of(
1, "aa",
2, "bb",
3, "cc");
final Map<Integer, String> filteredMap = Maps.filterEntries(map,
e -> e.getKey() >= 1 && !"cc".equals(e.getValue()));