私はJavaには順序付けのための効率的なメソッドがあると思います。順序付けメソッドを作成する必要はありません。
compareToメソッドがある場合は、Javaコレクション(たとえばリスト)を実行して、それに付属のメソッドを使用できます。
例えば:
import java.util.List;
import java.util.ArrayList;
public class Employee implements Comparable<Employee>{
private int id;
private String name;
private String surname;
private float salary;
public Employee(int id, String name, String surname, float salary) {
super();
this.id = id;
this.name = name;
this.surname = surname;
this.salary = salary;
}
// Compare 2 employees by salary
@Override
public int compareTo(Employee employee) {
// Compared by salary
if (this.salary < employee.salary) {
return -1;
}
else if(this.salary > employee.salary){
return 1;
}
return 0;
}
@Override
public String toString() {
return "Employee [name=" + name + ", salary=" + salary + "]";
}
public static void main(String args[]){
Employee employee1 = new Employee(1, "One", "One Surname", 1800);
Employee employee2 = new Employee(2, "Two", "Two Surname", 200);
Employee employee3 = new Employee(3, "Three", "Three Surname", 1500);
Employee employee4 = new Employee(4, "Four", "Four Surname", 800);
List<Employee> list = new ArrayList<>();
list.add(employee1);
list.add(employee2);
list.add(employee3);
list.add(employee4);
System.out.println(list); // Unordered list
list.sort(null);
System.out.println(list); // Ordered list by salary
}
}
あなたはこの出力を持つことになります。
[社員[名=ワン、給与= 1800.0]、従業員[名=二、給与= 200.0]、従業員の[名前従業員[名前= 4、給与= 800.0]、従業員[名前= 4、給与= 800.0]、従業員[名前= 4、給与= 800.0] 3人、給与= 1500.0]、従業員[名前= 1、給与= 1800.0]
更新の数が、ソートされたリストを取得する必要がある回数を超えている場合は、リストを更新するときには保存せず、取得するときにのみソートしてください。それはあなたが持っているものよりも優れた解決策を探し出す前に、あなたがそれを測定して、それが遅すぎるということを発見しました、そして、この種は犯人でしたか?そうでなければ、あなたはただ事前に最適化しており、それはすべての悪の根源です。 –
いくつかの注意点があります。ソートされたセットを使用してください。https://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html値を変更するときは、セットから削除し、変更して、再度追加します。注意点:上記のJB Nizetの点を考慮し、ソート順と 'equals'の間の関係についてjavadocを読んでください。 – Taylor
最も簡単な方法で、最も効率的な方法が何であるか、またはどのようにソートするかを尋ねていますか?後者の場合、Google検索では数多くの例が返されます。しかし、それは 'list.sort(Comparator.comparingInt(MyObject :: getMoneyValue))'に沸いてしまいます。 –