Java 如何使用Guava过滤多值地图数组

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

我有一个包含映射的数组。我想使用map对象内部的一些(多个)键和值来过滤数组。例如,其中ID>1,名称为“cc”(key>1,名称为“cc”)

我如何在Java中做到这一点? 我已经导入了包含Collections2的Guava库来过滤数组。 但是,我没有发现任何在数组中过滤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()));