import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class DataField {
private String name;
private String dataLevel;
public DataField(String name, String dataLevel) {
this.name = name;
this.dataLevel = dataLevel;
}
public String getName() {
return name;
}
public String getDataLevel() {
return dataLevel;
}
@Override
public String toString() {
return "DataField{" +
"name='" + name + '\'' +
", dataLevel='" + dataLevel + '\'' +
'}';
}
}
public class Main {
public static void main(String[] args) {
List<DataField> dataFields = new ArrayList<>();
dataFields.add(new DataField("userId", "其他"));
dataFields.add(new DataField("userName", "2级"));
dataFields.add(new DataField("password", "4级"));
dataFields.add(new DataField("email", "1级"));
dataFields.add(new DataField("phone", "3级"));
// 定义优先级
java.util.Map<String, Integer> priorityMap = new java.util.HashMap<>();
priorityMap.put("4级", 4);
priorityMap.put("3级", 3);
priorityMap.put("2级", 2);
priorityMap.put("1级", 1);
priorityMap.put("其他", 0);
// 使用Comparator进行排序
Collections.sort(dataFields, new Comparator<DataField>() {
@Override
public int compare(DataField df1, DataField df2) {
if (priorityMap.get(df2.getDataLevel()) == null || priorityMap.get(df1.getDataLevel()) == null) {
return 0;
}
return priorityMap.get(df2.getDataLevel()) - priorityMap.get(df1.getDataLevel());
}
});
// 输出排序后的结果
for (DataField df : dataFields) {
System.out.println(df);
}
}
}
-
DataField 类:表示每个字段的信息,包含字段名称 (
name
) 和数据定级 (dataLevel
)。 -
priorityMap:定义了一个优先级映射,将每个数据定级映射到一个整数,表示其优先级。
-
Comparator:使用
Collections.sort
方法对dataFields
列表进行排序。排序规则是根据dataLevel
的优先级从高到低排序。 -
输出结果:排序后,最高级别的字段会排在列表的第一个位置。
输出:
DataField{name='password', dataLevel='4级'}
DataField{name='phone', dataLevel='3级'}
DataField{name='userName', dataLevel='2级'}
DataField{name='email', dataLevel='1级'}
DataField{name='userId', dataLevel='其他'}
在这个例子中,password
字段的数据定级是 4级
,因此它被排在了第一个位置。