0
我的代码如下:无法理解可比性,比较
Person.java
package com.example;
import java.util.Comparator;
public class Person implements Comparator<Person> {
String name;
int emp_id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getEmp_id() {
return emp_id;
}
public void setEmp_id(int emp_id) {
this.emp_id = emp_id;
}
public Person(String name,int emp_id) {
this.name = name;
this.emp_id = emp_id;
}
}
PersonSort.java
package com.example;
import com.example.Person;
import java.util.*;
public class PersonSort implements Comparator<Person> {
public int compare(Person arg0, Person arg1) {
return arg0.getName().compareTo(arg1.getName());
}
}
PersonDetails.java
package com.example;
import java.util.*;
public class PersonDetails {
public List<Person> enter() {
List<Person> list = new ArrayList<Person>();
list.add(new Person("D", 1));
list.add(new Person("A", 56));
list.add(new Person("G", 43));
list.add(new Person("C", 32));
return list;
}
public static void main(String[] args) {
PersonDetails details = new PersonDetails();
List<Person> list = details.enter();
Collections.sort(list, new PersonSort());
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person p = it.next();
System.out.println(p.getName() + " " + p.getEmp_id());
}
}
}
在PersonSort.java我们使用的compareTo来比较两个字符串。当我们比较两个整数时,是否有任何替代方法?比如下面比较两个员工的ID:
public int compare(Person arg0, Person arg1) {
if (arg0.emp_id == arg1.emp_id)
return 0;
else if (arg0.emp_id > arg1.emp_id)
return 1;
else
return -1;
}
有没有像这样的逻辑来比较两个字符串而不调用compareTo?
你为什么要做这样的事情?即使有可能,比自己编写比较逻辑更容易使用'compareTo'吗? – 2013-02-13 09:51:17
尝试首先在此处了解区别:http://javarevisited.blogspot.com/2011/06/comparator-and-comparable-in-java.html和here :: http://stackoverflow.com/questions/1440134/java-what-the-the-difference-between-implementation-comparable-and-comparator – 2013-02-13 09:54:56
你不能用==来比较对象。它只会比较对象的参考而不是实际值。只有原始变量可以使用==来比较它的值。 – basiljames 2013-02-13 10:00:09