【问题标题】:Sorting and filtering list of hashmaps (objects) using Streams [duplicate]使用 Streams 排序和过滤哈希图(对象)列表 [重复]
【发布时间】:2018-04-04 04:35:56
【问题描述】:

我有哈希图列表: List <HashMap<String, Object>> objects 它是以下对象的列表:

{
    "name": "mark",
    "age": 12,
    "present": false,
    "strength": 11
}

现在,我想通过一些属性和过滤器以有效的方式对该列表进行排序。

在此之后,我想从给定列表中获取一些页面。

String sortBy = "name";
Integer ageFilter = 1;
Integer numPage;
Integer pageSize;


if (ageFilter != null){
    sortedAndFiltred = objects.sortBy(sortBy).filter(age > 100);
}
else {
    sortedAndFiltred = objects.sortBy(sortBy);
}


List <HashMap> page = sortedAndFiltred.getPage(numPage);

你能告诉我如何用 Java 8 来做吗? 我正在寻找一些优雅的方式。

【问题讨论】:

  • 地图 -> 流 -> 过滤器 -> 字符串
  • 不要忘记转换您为比较器提供的函数的结果(即comparing(m -&gt; (String)m.get("name")))。这同样适用于过滤器。之后,您可以查看stackoverflow.com/questions/28210775/… 以了解如何将您的流划分为块。然后您可以使用Stream#skip() 获取所需的页面。

标签: java arraylist java-8 hashmap


【解决方案1】:

按年龄过滤地图

map.sort((o1, o2) -> o1.getAge() - o2.getAge());

或例如按名称

Collections.sort(map, (o1, o2) -> o1.getName().compareTo(o2.getName()));

【讨论】:

  • 这甚至没有在功能上完成问题中的预期输出。
猜你喜欢
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
  • 1970-01-01
  • 2017-07-16
  • 2020-10-11
  • 2023-03-27
  • 2021-10-28
相关资源
最近更新 更多