java - 如何使用 Guava 过滤具有多个值的 map 数组

标签 java android guava android-guava

我有一个包含 map 的数组。我想使用 map 对象内部的一些(多个)键和值来过滤我的数组。例如,WHERE ID > 1 AND Name <> "cc"(key > 1, Name<>"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() ???

我想用一种 ID >= 1 AND NAME<>"cc" 进行过滤这将生成包含 Map 对象的数组,如下所示:[{ID=1,Name="aa"}, {ID=2,Name="bb"}]

有人可以帮忙吗?

最佳答案

我不知道你需要 Guava 做什么。我会通过以下方式做到这一点:

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());

关于java - 如何使用 Guava 过滤具有多个值的 map 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46765245/

相关文章:

java - 在 Swing 中获取当前外观组件背景颜色的正确方法是什么?

java - 替换 Android 默认字体文件

java - Guava 库中的 Iterators.any

java - 使用 Immutable 对象创建 TreeMultimap

java - 如何从 Iterable/Collection 创建 TreeMultimap?

java - Android无法向Mysql数据库插入数据但logcat中插入数据

java - 添加android项目依赖失败

java - Graphics2d 方法不产生输出

java - SQLiteBindORColumnindexoutofrange异常

android - 为了使用 runOnUIThread 而扩展 Activity 有什么问题吗?