获取 java 中数组列表中分组属性的大小
Get Size of grouped properties in an arraylist in java
我该怎么做?
我有一个 ArrayList<ErrorDetails>
,其中 error details
是具有 errorCode
和 errorMessage
属性的 POJO。
此错误列表中的数据可以是 --
[999, "Hello"]
[111, "Hello"]
[999, "Hello"]
[111, "Hello"]
[999, "Hello"]
[999, "Hello"]
[456, "Hello"]
[456, "Hello"]
[999, "Hello"]
我想得到一个包含 3 个项目的列表,
[unique error code, no of occurence of this error code in previous list].
我该怎么做?
您可以检查密钥是否存在。如果不存在,则添加键和 1 作为值。如果确实存在,则将键的值增加 1。
您可以遍历 List
并将错误代码作为 key
s 放入 Map
中,并将值作为出现次数
代码:
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);
}
}
ErrorCodeMessage POJO class
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;
}
}
您可以使用 Java 8 个特征 Stream
进行分组和计数,例如:
Map<Integer, Long> mapping = list.stream().collect(
groupingBy(ErrorDetails::getErrorCode, counting()));
我该怎么做?
我有一个 ArrayList<ErrorDetails>
,其中 error details
是具有 errorCode
和 errorMessage
属性的 POJO。
此错误列表中的数据可以是 --
[999, "Hello"]
[111, "Hello"]
[999, "Hello"]
[111, "Hello"]
[999, "Hello"]
[999, "Hello"]
[456, "Hello"]
[456, "Hello"]
[999, "Hello"]
我想得到一个包含 3 个项目的列表,
[unique error code, no of occurence of this error code in previous list].
我该怎么做?
您可以检查密钥是否存在。如果不存在,则添加键和 1 作为值。如果确实存在,则将键的值增加 1。
您可以遍历 List
并将错误代码作为 key
s 放入 Map
中,并将值作为出现次数
代码:
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);
}
}
ErrorCodeMessage POJO class
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;
}
}
您可以使用 Java 8 个特征 Stream
进行分组和计数,例如:
Map<Integer, Long> mapping = list.stream().collect(
groupingBy(ErrorDetails::getErrorCode, counting()));