-3

について聞いたことがありBucket Sortingます。何百万ものレコードを並べ替えるときに、どのように最高のパフォーマンスが得られるかを明確にできる人はいますか? またはのアルゴリズムはありますn*log(n)O(n)

各従業員オブジェクトには id、name、salary プロパティがある 1000 個の従業員オブジェクトがあります。ArrayListこれらのオブジェクトをI want to sortthese objects に id プロパティに基づいて追加しました。とにかくありますか?Collections.sort()メソッドを使用せずに。以下の解決策を検討してください。最高のパフォーマンスを発揮するのは誰ですか?

ありがとう

4

6 に答える 6

3

ArrayList要素を ArrayFormat に格納できます。ユーザーの従業員を ID で識別する場合HashTableは、キーと値のペアを使用するクラスを使用できます。それ以外の場合は、Comparable インターフェイスを使用してクラスを実装できます。

public class Employee implements Comparable<Employee> {

    private String id;
    private String name;
    private int salary ;

    public int compareTo(Employee val) {
        return id.compareTo(val.id);
    }

    // getter and setters here...

    List<Employee> emp = new ArrayList<Employee>();
    Collections.sort(emp);
于 2013-08-06T11:16:26.063 に答える
3

Collections.sort() なし:

最初Comparable<Employee>に従業員のクラスに実装してオーバーライドするcompareTo

@Override
public int compareTo(Employee o) {

    return this.id.compareTo(o.id);
}

ソートされていないリストを渡してTreeSet取得setし(IDでソート)、これを使用して作成new Listしますset

List<Employee> list=new ArrayList<Employee>();
    list.add(new Employee(1, "A", Double.parseDouble("50")));
    list.add(new Employee(22, "B", Double.parseDouble("11")));
    list.add(new Employee(3, "C", Double.parseDouble("222")));
    list.add(new Employee(34, "D", Double.parseDouble("4")));

    SortedSet<Employee> set=new TreeSet<Employee>( list);

    List<Employee> l=new ArrayList<Employee>();
    l.addAll(set);

    System.out.println(l);

出力: ID なしでソートCollections.sort()

[Employee [id=1, name=A, price=50.0], Employee [id=3, name=C, price=222.0], Employee [id=22, name=B, price=11.0], Employee [id=34, name=D, price=4.0]]

編集:

従業員クラス:

class Employee implements Comparable<Employee>{

Integer id;
String name;
Double price;
       -------

}
于 2013-08-06T11:25:16.630 に答える
0

このコードを使用して、リストを並べ替えることができます。

Collections.sort(list, new Comparator() {
    public int compare(Object a, Object b) {
        Employee ea = (Employee) a;
        Employee eb = (Employee) b;
        return ea.getID() - eb.getID();
    }
}

これはCollections.sort、ID を比較するカスタム コンパレータを使用してリストを並べ替えるために使用されます。

が使えないならCollections.sort、先生がリストの並べ替え方を教えてくれたはずですよね?たぶん、講義で注意を払うことは報われるでしょう。

于 2013-08-06T11:08:04.813 に答える
-1

最初にそれをクラスのリストに変換します。

List<Employee> list = new List<Employee>(arraylist);

var sorted = list.OrderBy(o => o.id).ToList();
于 2013-08-06T11:33:07.107 に答える