获取java中arraylist中分组属性的大小

获取java中arraylist中分组属性的大小,java,list,count,Java,List,Count,我该怎么做 我有一个ArrayList,其中error details是POJO具有errorCode和errorMessage属性的 此错误列表中的数据可以是-- 我想得到一个结果,我得到一个列表,其中有3个项目 [unique error code, no of occurence of this error code in previous list]. 如何执行此操作?您可以检查密钥是否存在。如果不存在,则添加键和1作为值。如果它确实存在,则增加键的值1。您可以迭代列表,并将错误代码作

我该怎么做

我有一个
ArrayList
,其中
error details
是POJO具有
errorCode
errorMessage
属性的

此错误列表中的数据可以是--

我想得到一个结果,我得到一个列表,其中有3个项目

[unique error code, no of occurence of this error code in previous list].

如何执行此操作?

您可以检查密钥是否存在。如果不存在,则添加键和1作为值。如果它确实存在,则增加键的值1。

您可以迭代
列表
,并将错误代码作为
s放入
映射
,值作为引用

代码:


您可以使用Java 8功能进行分组和计数,如:

Map<Integer, Long> mapping = list.stream().collect(
        groupingBy(ErrorDetails::getErrorCode, counting()));
Map-mapping=list.stream().collect(
GroupBy(ErrorDetails::getErrorCode,counting());

这个答案是错误的,最后它只返回所有错误代码的大小1
    List<ErroCodeMessage> errors = new ArrayList<>();
    //... add ErroCodeMessages
    Map<Integer, Integer> stat = new HashMap<>();

    for (ErroCodeMessage error : errors) {
        if (stat.get(error.getErrorCode()) != null) {
            stat.put(error.getErrorCode(), stat.get(error.getErrorCode()) + 1);
        } else {
            stat.put(error.getErrorCode(), 1);
        }
    }
class ErroCodeMessage {

    private int errorCode;
    private String errorMessage;

    public ErroCodeMessage(int errorCode, String errorMessage) {
        super();
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
    }

    public int getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(int errorCode) {
        this.errorCode = errorCode;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

}
Map<Integer, Long> mapping = list.stream().collect(
        groupingBy(ErrorDetails::getErrorCode, counting()));