【问题标题】:Count occurrences of an entry in a hashmap property of an entity in a list计算列表中实体的 hashmap 属性中条目的出现次数
【发布时间】:2015-10-06 06:15:25
【问题描述】:

我有一个带有Map<String, Object> 属性的WorkflowTask 实体。

public class WorkflowTask {
    private Map<String, Object> properties;
}

Map 有一个条目 bpm_status,它的值可以是 Not Yet Started

我在数据表中显示List&lt;WorkflowTask&gt; 并检查以下条目:

<p:dataTable value="#{inboxController.list}" var="task">
    <p:column>
        <ui:fragment rendered="#{task.properties.bpm_status eq 'Not Yet Started'}"><b>#{msg.inbox_new_msg}</b>
        </ui:fragment>
    </p:column>
</p:dataTable>

我想在列表中显示一个计数器,其中包含此映射条目 bpm_status=Not Yet Started 的总出现次数。

<p>Amount of new messages: #{inboxController.list.???}</p>

我怎样才能做到这一点?

【问题讨论】:

  • 这个问题很啰嗦。所有 REST 事物和刷新周期都与呈现问题无关。只需使用“硬编码”模型创建一个 MCVE,并准确说明您希望在视图中显示哪些值。那部分甚至不清楚,所以我无法编辑问题以减少噪音并归结真正的问题。
  • 好的,给我一些时间,我会尽量使这篇文章尽可能清晰.. p.s. MCVE ?
  • 你仍然非常啰嗦和模糊。重新阅读问题 3 次后,我推测您基本上有一个 List&lt;Entity&gt; 其中 Entity 有一个 Map&lt;String, Object&gt; 属性,并且您想显示带有键 bpm_status 的地图条目的总出现次数和JSF 页面中的值IN_PROGRESS?你的问题是用一个清晰​​的段落而不是 1000 个单词和 50 个位置提出的吗?
  • 是的,也许你是对的,只是想解释一下 :) 你几乎是对的,我需要计算所有具有 Not Yet Started 价值的 bpm_status,这意味着它是一个新的消息(还没开)。并显示一个计数,有多少未打开的消息。 编辑:例如,您打开 FaceBook,在左侧菜单中看到 messages 2 这意味着在您的收件箱中有 2 条未打开的消息..所以我需要相同的

标签: jsf count hashmap el


【解决方案1】:

从 EL 3.0 开始,您可以在 EL 表达式中使用类似 Java8 的 stream and lambda operations 而无需 Java8(已经在 J​​ava7 上工作)。

您的要求可以实现如下:

<p>Amount of new messages: #{inboxController.list.stream().filter(task -> task.properties.bpm_status eq 'Not Yet Started').count()}</p>

如果您还没有使用 EL 3.0,那么您需要将其计入 backing bean 本身。

int notYetStartedCount = 0;

for (WorkflowTask task : list) {
    if ("Not Yet Started".equals(task.getProperties().get("bpm_status"))) {
        notYetStartedCount++;
    } 
}

如果您有兴趣,上面的 Java8 等效项是:

long notYetStartedCount = list.stream().filter(task -> "Not Yet Started".equals(task.getProperties().get("bpm_status"))).count();

【讨论】:

  • 忘了说,项目组在 JAVA 7 上工作,所以不能使用 Lambda。
  • 对不起.. 一开始误会了。非常感谢您帮助我不仅找到了 JAVA 问题的答案,而且还对我有耐心:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多