【发布时间】:2015-05-17 20:36:52
【问题描述】:
我正在编写一段编译良好但有点草率且可以优化的代码。有没有更好或更简单的方法来做到这一点。我是否以正确的方式使用 compareTo() 方法?我正在尝试使用不同的方法使代码比下面的示例更简洁、更快。
import java.util.ArrayList;
public class Sort {
public ArrayList<Name> sort(ArrayList<Name> names) {
ArrayList<Name> results;
results = new ArrayList<Name>();
do {
Name firstName = new Name("zzz", "zzz");
for (int i = 0; i < names.size(); i++)
if (names.get(i).getFirstName()
.compareTo(firstName.getFirstName()) < 0
|| names.get(i).getFirstName() == firstName
.getFirstName() && names.get(i).getSurName()
.compareTo(firstName.getSurName()) < 0)
firstName = new Name(names.get(i).getFirstName(),
names.get(i).getSurName());
results.add(firstName);
names.remove(firstName);
} while (names.size() > 0);
return results;
}
}
class Name {
private String firstName;
private String surName;
public Name() {
}
public Name(String firstName, String surName) {
this.firstName = firstName;
this.surName = surName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getSurName() {
return surName;
}
public void setSurName(String surName) {
this.surName = surName;
}
public String toString() {
return firstName + " " + surName;
}
public boolean equals(Object other) {
return firstName == ((Name) other).firstName
&& surName == ((Name) other).surName;
}
}
【问题讨论】:
-
如果你必须使用选择排序,因为这是家庭作业,它并不意味着高效。如果你想要效率,我建议你使用 List 的内置排序例程。例如Collections.sort(list, your-custom-comarator)
标签: java optimization arraylist