如何根据人员身份证号获取对应的省,市,并将市放入对应省的集合中,并统计所在省人员数量和所在市人员数量
时间: 2024-04-17 09:25:38 浏览: 25
要根据人员身份证号获取对应的省份和城市,并将城市放入对应省份的集合中,同时统计所在省份和城市的人员数量,你可以使用一个 `Person` 类来表示人员信息,并使用一个 `Map` 对象来存储省份和城市的对应关系,以及统计人员数量。
以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PersonInfoAnalyzer {
public static void main(String[] args) {
List<Person> persons = new ArrayList<>();
persons.add(new Person("110101200001011234")); // 例子身份证号1
persons.add(new Person("320102199001011234")); // 例子身份证号2
// 添加更多人员信息...
Map<String, List<String>> provinceCityMap = new HashMap<>();
Map<String, Integer> provinceCountMap = new HashMap<>();
Map<String, Integer> cityCountMap = new HashMap<>();
for (Person person : persons) {
String province = getProvinceFromIdCard(person.getIdCardNumber());
String city = getCityFromIdCard(person.getIdCardNumber());
List<String> cities = provinceCityMap.getOrDefault(province, new ArrayList<>());
cities.add(city);
provinceCityMap.put(province, cities);
provinceCountMap.put(province, provinceCountMap.getOrDefault(province, 0) + 1);
cityCountMap.put(city, cityCountMap.getOrDefault(city, 0) + 1);
}
// 输出结果
for (Map.Entry<String, List<String>> entry : provinceCityMap.entrySet()) {
String province = entry.getKey();
List<String> cities = entry.getValue();
System.out.println(province + ": " + cities);
}
for (Map.Entry<String, Integer> entry : provinceCountMap.entrySet()) {
String province = entry.getKey();
int count = entry.getValue();
System.out.println(province + " 人员数量: " + count);
}
for (Map.Entry<String, Integer> entry : cityCountMap.entrySet()) {
String city = entry.getKey();
int count = entry.getValue();
System.out.println(city + " 人员数量: " + count);
}
}
private static String getProvinceFromIdCard(String idCardNumber) {
String provinceCode = idCardNumber.substring(0, 2); // 身份证号前两位为省份代码
// 根据省份代码获取对应的省份名称
// 假设有一个名为 getProvinceName 的方法可以根据省份代码获取省份名称
String provinceName = getProvinceName(provinceCode);
return provinceName;
}
private static String getCityFromIdCard(String idCardNumber) {
String cityCode = idCardNumber.substring(2, 4); // 身份证号第三和第四位为城市代码
// 根据城市代码获取对应的城市名称
// 假设有一个名为 getCityName 的方法可以根据城市代码获取城市名称
String cityName = getCityName(cityCode);
return cityName;
}
private static String getProvinceName(String provinceCode) {
// 根据省份代码返回对应的省份名称
// 你可以使用自己的逻辑或数据源来实现该方法
// 这里只是一个示例,直接返回省份代码作为名称
return provinceCode;
}
private static String getCityName(String cityCode) {
// 根据城市代码返回对应的城市名称
// 你可以使用自己的逻辑或数据源来实现该方法
// 这里只是一个示例,直接返回城市代码作为名称
return cityCode;
}
static class Person {
private String idCardNumber;
public Person(String idCardNumber) {
this.idCardNumber = idCardNumber;
}
public String getIdCardNumber() {
return idCardNumber;
}
}
}
```
在示例代码中,我们定义了一个 `PersonInfoAnalyzer` 类,并在其中定义了一个内部类 `Person` 来表示人员信息。我们使用 `Person` 类的列表 `persons` 存储人员信息。
然后,我们使用 `Map` 对象 `provinceCityMap` 来存储省份和城市的对应关系,使用 `provinceCountMap` 和 `cityCountMap` 分别统计省份和城市的人员数量。
在遍历人员信息列表时,我们依次获取每个人员的省份和城市,并将城市添加到对应省份的集合中。同时,根据省份和城市统计人员数量。
最后,我们通过遍历 `provinceCityMap`、`provinceCountMap` 和 `cityCountMap` 将结果打印出来,分别输出每个省份对应的城市集合,以及所在省份和城市的人员数量。
希望这个示例能帮助你实现根据人员身份证号获取对应的省份和城市,并将城市放入对应省份的集合中,并统计所在省份和城市的人员数量。
相关推荐
![sql](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)