gpt4 book ai didi

Java 列表对对象字段常量值进行排序

转载 作者:行者123 更新时间:2023-12-01 18:46:39 25 4
gpt4 key购买 nike

我有一个代表严重级别的枚举

public enum Severity {
HIGH("H"), MEDIUM("M"), LOW("L");
}

Person one = new Person();
one.setSeverity(Severity.HIGH);

其他字段...

Person two = new Person();
two.setSeverity(Severity.LOW);

......

Person three = new Person();
three.setSeverity(Severity.HIGH);

List<Person> persons = Lists.newArrayList();
persons.add(one);
persons.add(two);
persons.add(three);

我想对人员列表进行排序,以按严重性字段排序(即“高”、“中”、“低”)。

对人员列表进行排序后我的预期结果应该是按高、高、低的顺序?

我可以知道如何实现这一目标吗?

注意:我正在使用 com.google.common.collect

最佳答案

尝试下面的代码

创建一个ENUM

package com.rais;

public enum Severity {
HIGH("H"), MEDIUM("M"), LOW("L");

private final String value;

private Severity(String value) {
this.value = value;
}



}

现在根据您的要求创建 Person 类,例如。

package com.rais;

public class Person {

private Severity severity;
private String name;


public Person(Severity severity, String name) {
super();
this.severity = severity;
this.name = name;
}

public Severity getSeverity() {
return severity;
}

public void setSeverity(Severity severity) {
this.severity = severity;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

最后创建一个测试客户端并应用以下逻辑。

package com.rais;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class TestClient {

public static void main(String[] args) {

Person one = new Person(Severity.HIGH, "shayam");
Person two = new Person(Severity.MEDIUM, "mohan");
Person three = new Person(Severity.LOW, "radha");
Person four = new Person(Severity.HIGH, "rakesh");
Person five = new Person(Severity.MEDIUM, "kailash");
Person six = new Person(Severity.LOW, "rais");
Person seven = new Person(Severity.LOW, "abhishek");

List<Person> persons = new ArrayList<Person>();
persons.add(one);
persons.add(two);
persons.add(three);
persons.add(four);
persons.add(five);
persons.add(six);
persons.add(seven);

Collections.sort(persons, new Comparator<Person>() {

@Override
public int compare(Person person1, Person person2) {

if(person1.getSeverity()==person2.getSeverity())
{
return person1.getName().compareTo(person2.getName());
}
else{
return person1.getSeverity().compareTo(person2.getSeverity());
}

}
});

for (Person person : persons) {
System.out.println(person.getName()+" "+ person.getSeverity());

}

}

}

我确信您会得到以下输出。

rakesh HIGH
shayam HIGH
kailash MEDIUM
mohan MEDIUM
abhishek LOW
radha LOW
rais LOW

关于Java 列表对对象字段常量值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17539226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com