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