SORU
20 EYLÜL 2008, CUMARTESİ


Bir Harita nasıl sıralama<Key, Value> Java değerleri?

Java için nispeten yeni duyuyorum, ve genellikle değerleri Map<Key, Value> Bir tür istiyorum. Değerleri benzersiz olmadığından, array ve bu diziyi sıralama içine keySet dönüştürme kendimi buluyorumdizi türbir ileözel karşılaştırıcıdeğeri anahtarı ile ilgili şu sıralar. Daha kolay bir yolu var mı?

CEVAP
16 AĞUSTOS 2009, Pazar


ÖNEMLİ NOT:

Bu kodu çeşitli şekillerde kesebilirsiniz. Eğer sağlanan kodu kullanmak istiyorsanız, emin yorum etkilerine karşı dikkatli olarak okuyun. Örneğin, değerleri artık kendi anahtarı tarafından alınabilir. (get her zaman döner. ** 6)*


Yukarıdaki tüm çok daha kolay gibi görünüyor. Aşağıdaki gibi bir TreeMap kullanın

public class Testing {
    public static void main(String[] args) {
        HashMap map = new HashMap();
        ValueComparator bvc = new ValueComparator(map);
        TreeMap sorted_map = new TreeMap(bvc);

        map.put("A", 99.5);
        map.put("B", 67.4);
        map.put("C", 67.4);
        map.put("D", 67.3);

        System.out.println("unsorted map: "   map);
        sorted_map.putAll(map);
        System.out.println("results: "   sorted_map);
    }
}

class ValueComparator implements Comparator {
    Map base;

    public ValueComparator(Map base) {
        this.base = base;
    }

    // Note: this comparator imposes orderings that are inconsistent with
    // equals.
    public int compare(String a, String b) {
        if (base.get(a) >= base.get(b)) {
            return -1;
        } else {
            return 1;
        } // returning 0 would merge keys
    }
}

Çıkış:

    unsorted map: {D=67.3, A=99.5, B=67.4, C=67.4}
    results: {D=67.3, B=67.4, C=67.4, A=99.5}
    

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • multimediaGEEKS LLC

    multimediaGE

    3 Mayıs 2010
  • skiesofblack.net

    skiesofblack

    14 HAZİRAN 2009
  • tinycammonitor

    tinycammonit

    14 Aralık 2010