class Person
{
private String name;
private String profession;
}
职业有价值观:
- 工程师
- 医生
- 教师
- 学生
我有人员名单,并希望在职业的基础上对其进行排序。 工程师先是医生,然后是老师,然后是学生。
是否可以使用类似的界面对其进行排序。
答案 0 :(得分:1)
是的,你可以实现可比性。创建方法compareTo(Person obj),然后编写自定义逻辑。您可以按字母顺序或任何其他算法进行比较 - 例如医生之前的工程师,因为他赚的钱更多:)对于字母比较,您可以这样做:
#ifndef AES_H
#define AES_H
#include <CkCrypt2.h>
#include <string>
class AES
{
public:
AES();
~AES();
void setUpAES();
void encrypt(const char* str);
void decrypt(char* crypto);
std::string _crypto;
const char* _message;
private:
CkCrypt2 _crypt;
bool _success;
const char* _AESkey;
bool _isKeySet;
};
#endif // AES_H
之后你只需使用Collections.sort
答案 1 :(得分:1)
为变量添加枚举:
class Person implements Comparable<Person> {
@Override
public int compareTo(Person o) {
return this.profession.compareTo(o.getProfession());
}
private String name;
private String profession;
}
之后可以将功能添加到Person类,这将为您提供专业价值:
class Person {
private String name;
private String profession;
private enum enumProffesion
{
Doctor, Teacher, student;
}
}
之后,您只需实现将对所有人进行排序的逻辑。为此,您可以通过以下答案帮助自己:sorting integers in order lowest to highest java
答案 2 :(得分:1)
您可以使用Collection.sort
这样的方法对自定义对象进行排序,
Collections.sort(list, new Comparator(){
public int compare(Object o1, Object o2) {
Person p1 = (Person) o1;
Person p2 = (Person) o2;
return p1.getProfession().compareToIgnoreCase(p2.getProfession());
}
});
Sort
中的reverse order
只需按照此return
语句行生成,
p2.getProfession().compareToIgnoreCase(p1.getProfession());
这将直接使您的list
排序。
答案 3 :(得分:0)
我的建议 -
1。创建新课程event.preventDefault()
-
Profession
2。现在为维护订单的每个class Profession{
public Profession(Integer id, String prefessionName){
this.id=id;
this.prefessionName=prefessionName;
}
Integer id;
String professionName;
}
对象/实例提供ID。例如 -
Profession
3。现在使用 Profession engineer = new Profession(1, "Engineer"); //since Engineer is in first place
Profession doctor = new Profession(2, "Doctor"); //since Doctor is in second place
Profession teacher = new Profession(3, "Teacher");
Profession student = new Profession(4, "Student");
界面对Profession
的{{1}}进行排序。
答案 4 :(得分:0)
在Person类中添加专业的getter和setter,只需使用下面的代码
class Person {
private String name;
private String profession;
public String getProfession() {
return profession;
}
public void setProfession(String profession) {
this.profession = profession;
}
}
List<Person> personList = new ArrayList<Person>();
Person p1 = new Person();
p1.setProfession("Engineer");
personList.add(p1);
Person p2 = new Person();
p2.setProfession("Doctor");
personList.add(p2);
Person p3 = new Person();
p3.setProfession("Teacher");
personList.add(p3);
Person p4 = new Person();
p4.setProfession("student");
personList.add(p4);
Collections.sort(personList, new Comparator() {
@Override
public int compare(Object obj1, Object obj2) {
Person p1 = (Person)obj1;
Person p2 = (Person)obj2;
return p1.getProfession().compareToIgnoreCase(p2.getProfession());
}
});
答案 5 :(得分:0)
如果Method threw 'com.hp.hpl.jena.sparql.ARQException' exception. Cannot evaluate com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP.toString()
替换profession
字段,则可以轻松完成:
enum
这里class Person implements Comparable<Person> {
private String name;
private Profession profession;
// by this we'll define natural ordering based on ordering
// in which `Profession` enum values are declared
@Override
public int compareTo(Person p) {
return this.profession.compareTo(p.profession);
}
}
枚举:
Profession
答案 6 :(得分:0)
两种方式:
Comparable
界面Comparator
使用第一种方法,您只能通过一种方法compareTo
对集合进行排序,您将定义
您的Person.java
class Person implements Comparable<Person> {
private String name;
private String profession;
@Override
public int compareTo(Person o) {
return this.profession.compareTo(o.getProfession());
}
public String getName() {
return name;
}
public String getProfession() {
return profession;
}
}
然后你需要打电话:
Collections.sort(yourCollection);
使用第二种方式,您可以按一个或多个Comparator
进行排序,这样您就可以将同一个集合与不同的标准进行比较。
两个Comparator
public class PersonSortByNameComparator implements Comparator<Person>{
@Override
public int compare(Person p1, Person p2) {
return p1.getName().compareTo(p2.getName());
}
}
public class PersonSortByAlphabeticalProfessionComparator implements Comparator<Person>{
@Override
public int compare(Person p1, Person p2) {
return p1.getProfession().compareTo(p2.getProfession());
}
}
或者你需要的那个:
public class PersonSortByProfessionComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
if(p1.getProfession().equalsIgnoreCase(p2.getProfession())
return 0;
if(p1.getProfession().equalsIgnoreCase("student")
return -1;
if(p1.getProfession().equalsIgnoreCase("engineer")
return 1;
if(p1.getProfession().equalsIgnoreCase("doctor")
return 1;
else
return -1;
}
}
然后给其中一个打电话:
Collections.sort(yourCollection, new PersonSortByNameComparator());
This blog article写得非常好,你可以举一些例子