现有list集合对象 id(Long), superior_userName(String), superior_nickName(String), superior_mobile(String), user_form(String) 根据user_form 去重并统计user_form值为app和小程序 的数量和总数量
时间: 2024-02-24 21:55:10 浏览: 109
可以使用 Java 中的 Map 和 Counter 来实现。假设有以下数据:
```java
List<Map<String, Object>> data = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("id", 1L);
map1.put("superior_userName", "user1");
map1.put("superior_nickName", "nick1");
map1.put("superior_mobile", "123456789");
map1.put("user_form", "app");
data.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("id", 2L);
map2.put("superior_userName", "user2");
map2.put("superior_nickName", "nick2");
map2.put("superior_mobile", "234567890");
map2.put("user_form", "小程序");
data.add(map2);
Map<String, Object> map3 = new HashMap<>();
map3.put("id", 3L);
map3.put("superior_userName", "user3");
map3.put("superior_nickName", "nick3");
map3.put("superior_mobile", "345678901");
map3.put("user_form", "app");
data.add(map3);
Map<String, Object> map4 = new HashMap<>();
map4.put("id", 4L);
map4.put("superior_userName", "user4");
map4.put("superior_nickName", "nick4");
map4.put("superior_mobile", "456789012");
map4.put("user_form", "其他");
data.add(map4);
Map<String, Object> map5 = new HashMap<>();
map5.put("id", 5L);
map5.put("superior_userName", "user5");
map5.put("superior_nickName", "nick5");
map5.put("superior_mobile", "567890123");
map5.put("user_form", "小程序");
data.add(map5);
Map<String, Object> map6 = new HashMap<>();
map6.put("id", 6L);
map6.put("superior_userName", "user6");
map6.put("superior_nickName", "nick6");
map6.put("superior_mobile", "678901234");
map6.put("user_form", "app");
data.add(map6);
```
统计 `user_form` 值为 `app` 和 `小程序` 的数量和总数量,可以使用以下代码:
```java
Map<String, Integer> result = new HashMap<>();
result.put("app", 0);
result.put("小程序", 0);
for (Map<String, Object> d : data) {
String userForm = (String) d.get("user_form");
if (result.containsKey(userForm)) {
result.put(userForm, result.get(userForm) + 1);
}
result.put("总数量", result.getOrDefault("总数量", 0) + 1);
}
for (Map.Entry<String, Integer> entry : result.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
```
输出结果为:
```
小程序: 2
app: 3
总数量: 6
```
其中,首先创建了一个空的 Map 对象 `result`,并初始化 `app` 和 `小程序` 两个计数器为 0。然后遍历数据列表 `data`,对于每个数据项,取出 `user_form` 字段,并检查其是否等于 `app` 或 `小程序`,如果是,则将其对应的计数器加 1,否则忽略。最后将所有数据项的数量加起来,并将其保存到 `总数量` 计数器中。最后遍历 `result`,输出 `app`、 `小程序` 和 `总数量` 计数器的值。
阅读全文