下面展示一些 内联代码片
。
定义实体类
class user {
private String name;
private String userId;
private String sex;
user(String name, String userId, String sex) {
this.name = name;
this.userId = userId;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String toString() {
return "name:" + name + "\tuserId:" + userId + "\tsex:" + sex;
}
}
排序写法
public static void main(String[] args) {
//安装规则排序 ,如果不包含再list里面放到最后
List<String> stringList = new ArrayList<>();
stringList.add("印度");
stringList.add("法国");
//插入数据
List<user> list = new ArrayList<>();
list.add(new user("中国", "ss", "1"));
list.add(new user("美国", "ss", "1"));
list.add(new user("日本", "ss", "1"));
list.add(new user("法国", "ss", "1"));
list.add(new user("印度", "ss", "1"));
list.add(new user("俄罗斯", "ss", "1"));
list.sort((o1, o2) -> {
if (!stringList.contains(o1.getName())) return 1;
if (!stringList.contains(o2.getName())) return -1;
int a = 0;
for (int i = 0; i < stringList.size(); i++) {
if (stringList.get(i).equals(o1.getName())) {
a = i;
}
}
int b = 0;
for (int i = 0; i < stringList.size(); i++) {
if (stringList.get(i).equals(o2.getName())) b = i;
}
return a - b;
});
list.forEach(item -> System.out.println(item.toString()));
}
排序后
下面展示一些 内联代码片
。
name:印度 userId:ss sex:1
name:法国 userId:ss sex:1
name:中国 userId:ss sex:1
name:美国 userId:ss sex:1
name:日本 userId:ss sex:1
name:俄罗斯 userId:ss sex:1
进行简单封装
/**
* 自定义排序
*
* @param list 要排序的内容
* @param name 排序字段名
* @param stringList 顺序(排序规则)
* @param <T>
* @return
*/
static <T> List<T> customSort(List<T> list, String name, List<String> stringList) {
list.sort((o1, o2) -> {
if (!stringList.contains(getFieldValue(o1, name))) return 1;
if (!stringList.contains(getFieldValue(o2, name))) return -1;
int a = 0;
for (int i = 0; i < stringList.size(); i++) {
if (stringList.get(i).equals(getFieldValue(o1, name))) {
a = i;
}
}
int b = 0;
for (int i = 0; i < stringList.size(); i++) {
if (stringList.get(i).equals(getFieldValue(o2, name))) b = i;
}
return a - b;
});
return list;
}
//获取实体类内容
static String getFieldValue(Object target, String fieldName) {
try {
Object HSSFCell = FieldUtils.readField(target, fieldName, true);
if (HSSFCell instanceof String) {
return (String) HSSFCell;
}
TextRenderData textRenderData = (TextRenderData) HSSFCell;
return textRenderData.getText();
} catch (IllegalAccessException e) {
throw new RuntimeException("字段类型不匹配,请检查字段类型和实体类是否一致");
}
}
调用
public static void main(String[] args) {
List<String> stringList = new ArrayList<>();
stringList.add("印度");
stringList.add("法国");
stringList.add("俄罗斯");
List<user> list = new ArrayList<>();
list.add(new user("中国", "ss", "1"));
list.add(new user("美国", "ss", "1"));
list.add(new user("日本", "ss", "1"));
list.add(new user("法国", "ss", "1"));
list.add(new user("印度", "ss", "1"));
list.add(new user("俄罗斯", "ss", "1"));
list = customSort(list, "name", stringList);
list.forEach(item -> System.out.println(item.toString()));
}
结果
name:印度 userId:ss sex:1
name:法国 userId:ss sex:1
name:俄罗斯 userId:ss sex:1
name:中国 userId:ss sex:1
name:美国 userId:ss sex:1
name:日本 userId:ss sex:1