SORU
27 NİSAN 2011, ÇARŞAMBA


Nasıl bazı özelliği ile nesneleri sıralamak için

Basit bir sınıf var

public class ActiveAlarm {
    public long timeStarted;
    public long timeEnded;
    private String name = "";
    private String description = "";
    private String event;
    private boolean live = false;
}

ve con Listesi. Ne zaman sona erdi, sonra timestarted tarafından artan sırada sıralamak için ? Herkes yardımcı olabilir ? Genel algoritma ve aşırı operatör < C biliyorum; ama Java yeni duyuyorum.

CEVAP
27 NİSAN 2011, ÇARŞAMBA


ActiveAlarm Comparable<ActiveAlarm> uygulamak olun ya da ayrı bir sınıfta Comparator<ActiveAlarm> uygulamak ya. O zaman arayın:

Collections.sort(list);

ya

Collections.sort(list, comparator);

Genel olarak, eğer bir tek şey varsa Comparable<T> uygulamak için iyi bir fikirdir "" sıralama düzeni... aksi takdirde (eğer . doğal ^em>olurbelli bir düzen içinde sıralamak istiyorum, ama aynı derecede kolayca farklı bir tane ister) belki daha iyi Comparator<T> uygulamak için. Bu durum, her iki şekilde de, dürüst olmak gerekirse gidebilir... ama isterdimmuhtemelendaha esnek Comparator<T> seçeneği ile sopa.

EDİT: Örnek uygulama:

public class AlarmByTimesComparer implements Comparator<ActiveAlarm> {
  @Override
  public int compare(ActiveAlarm x, ActiveAlarm y) {
    // TODO: Handle null x or y values
    int startComparison = compare(x.timeStarted, y.timeStarted);
    return startComparison != 0 ? startComparison
                                : compare(x.timeEnded, y.timeEnded);
  }

  // I don't know why this isn't in Long...
  private static int compare(long a, long b) {
    return a < b ? -1
         : a > b ? 1
         : 0;
  }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009
  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • Keith Anthe

    Keith Anthe

    26 NİSAN 2011