java list 根据元素idcard身份证字段排序
时间: 2023-07-28 20:11:00 浏览: 146
可以使用Java 8的Lambda表达式和Comparator接口来实现:
假设你有一个List<User>,其中User类有一个idcard字段,你可以按照以下方式进行排序:
```
List<User> userList = ...; // 假设已经初始化了这个List
Collections.sort(userList, Comparator.comparing(User::getIdcard));
```
这将根据User对象的idcard字段进行升序排序。如果你想进行降序排序,只需将comparing方法改为comparingDescending即可:
```
Collections.sort(userList, Comparator.comparing(User::getIdcard).reversed());
```
注意:如果idcard字段是一个字符串类型,这些方法将按照字母顺序排序,而不是按照数字顺序排序。如果你希望按照数字顺序排序,可以使用以下代码:
```
Collections.sort(userList, Comparator.comparingInt(u -> Integer.parseInt(u.getIdcard())));
```
相关问题
java使用正则表达式验证身份证号
可以使用以下代码来验证身份证号是否合法:
```java
public static boolean isValidIdCard(String idCard) {
// 身份证号正则表达式
String regx = "[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[012]))(([012]\\d)|3[01])\\d{3}[Xx\\d]";
Pattern pattern = Pattern.compile(regx);
Matcher matcher = pattern.matcher(idCard);
if (!matcher.matches()) {
// 身份证号不合法
return false;
}
// 验证身份证号最后一位校验码
int[] factor = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char[] code = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
int sum = 0;
for (int i = 0; i < 17; i++) {
sum += (idCard.charAt(i) - '0') * factor[i];
}
if (idCard.charAt(17) == 'x' || idCard.charAt(17) == 'X') {
return code[sum % 11] == 'X';
} else {
return code[sum % 11] == idCard.charAt(17);
}
}
```
该代码使用正则表达式验证身份证号格式是否正确,然后再验证身份证号的最后一位校验码是否正确,如果都正确则返回 true,否则返回 false。
java通过正则表达式截取身份证信息
可以使用以下代码来截取身份证信息:
```java
String idCard = "身份证号码";
Pattern pattern = Pattern.compile("(\\d{6})(\\d{4})(\\d{2})(\\d{2})(\\d{3})([0-9Xx])");
Matcher matcher = pattern.matcher(idCard);
if (matcher.matches()) {
String province = matcher.group(1);
String year = matcher.group(2);
String month = matcher.group(3);
String day = matcher.group(4);
String sequence = matcher.group(5);
String checkDigit = matcher.group(6);
System.out.println("省份:" + province);
System.out.println("出生年份:" + year);
System.out.println("出生月份:" + month);
System.out.println("出生日期:" + day);
System.out.println("顺序号:" + sequence);
System.out.println("校验位:" + checkDigit);
}
```
这段代码可以将身份证号码中的省份、出生年份、出生月份、出生日期、顺序号和校验位截取出来。
阅读全文