之前一直在项目中使用List 的排序,或者一些其他的用法,今天总结一下。做个记录
一、创建一个实体类
项目的实际应用中用的比较多的是在一些实体类的集合中,进行一些比较或者排序。
public class User {
private int age;
private String name;
private String paixu;
public User(int age, String name) {
super();
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPaixu() {
return paixu;
}
public void setPaixu(String paixu) {
this.paixu = paixu;
}
@Override
public String toString() {
return "User [age=" + age + ", name=" + name + ", paixu=" + paixu + "]";
}
二、创建一个简单的运行方法
1.一般使用 数字 直接比较的时候 比较简单,两者比较大小就可以。但是对于汉字之类的比较,我通常的做法是,用一个字段存储汉字的首字母,这样直接按照汉字的字母进行比较就可以。下面是一个提取汉字首字母的方法
/**
* 提取每个汉字的首字母
*
* @param str
* @return String
*/
public static String getPinYinHeadChar(String str) {
String convert = "";
for (int j = 0; j < str.length(); j++) {
char word = str.charAt(j);
// 提取汉字的首字母
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
if (pinyinArray != null) {
convert += pinyinArray[0].charAt(0);
} else {
convert += word;
}
}
return convert;
}
2.使用的jar包
com.github.liuzhuoming23
pinyin4j-spring-boot-starter
0.0.4
3.记录一下示例代码
代码中使用了 java 8 的 新特性 lambda 表达式,好处:使代码简单紧凑。
public static void paixu() {
List uList = new ArrayList();
uList.add(new User(12, "张三"));
uList.add(new User(13, "李四"));
uList.add(new User(10, "王五"));
uList.add(new User(89, "赵柳"));
uList.add(new User(1, "苟牧"));
uList.add(new User(24, "狗子"));
// 获取名字的每一个汉字的首字母 其实如果用汉字来排序的话都可以使用此方法
uList.forEach(e -> e.setPaixu(Pinyin4jUtil.getPinYinHeadChar(e.getName())));
// 按照年龄升序
uList.sort((User u1, User u2) -> u1.getAge() - u2.getAge());
System.out.println("按照年龄升序==" + uList.toString());
// 按照年龄降序
uList.sort((User u1, User u2) -> u2.getAge() - u1.getAge());
System.out.println("按照年龄降序==" + uList.toString());
// 按照姓名 升序
uList.sort((User u1, User u2) -> u1.getPaixu().compareTo(u2.getPaixu()));
System.out.println("按照姓名 升序==" + uList.toString());
// 按照姓名降序
uList.sort((User u1, User u2) -> u2.getPaixu().compareTo(u1.getPaixu()));
System.out.println("按照姓名降序==" + uList.toString());
//判断是否存在重复值
Map
4.运行结果
public static void main(String[] args) {
paixu();
}
按照年龄升序==[User [age=1, name=苟牧, paixu=gm], User [age=10, name=王五, paixu=ww], User [age=12, name=张三, paixu=zs], User [age=13, name=李四, paixu=ls], User [age=24, name=狗子, paixu=gz], User [age=89, name=赵柳, paixu=zl]]
按照年龄降序==[User [age=89, name=赵柳, paixu=zl], User [age=24, name=狗子, paixu=gz], User [age=13, name=李四, paixu=ls], User [age=12, name=张三, paixu=zs], User [age=10, name=王五, paixu=ww], User [age=1, name=苟牧, paixu=gm]]
按照姓名 升序==[User [age=1, name=苟牧, paixu=gm], User [age=24, name=狗子, paixu=gz], User [age=13, name=李四, paixu=ls], User [age=10, name=王五, paixu=ww], User [age=89, name=赵柳, paixu=zl], User [age=12, name=张三, paixu=zs]]
按照姓名降序==[User [age=12, name=张三, paixu=zs], User [age=89, name=赵柳, paixu=zl], User [age=10, name=王五, paixu=ww], User [age=13, name=李四, paixu=ls], User [age=24, name=狗子, paixu=gz], User [age=1, name=苟牧, paixu=gm]]
升序==[1, 11, 111, 123, 231, 2231, 123441]
降序==[123441, 2231, 231, 123, 111, 11, 1]
年龄大于100的数量:5