2016-04-08 28 views
2

Böyle bir kodum var, sortby'de verilen tuşa göre Harita Listesinden değeri sıralamaya çalışıyorum. Kod aşağıdaki gibidir: uyumsuz veri türleri nedeniyle karşılaştırıcıyı karşılaştıramaz ancak karşılaştırıcıyla karşılaştırılamaz. Map<>'u Map<String,String> veya başka bir öneriye nasıl dönüştürebilirim, böylece karşılaştırıcı tüm veri türlerini karşılaştırabilir mi?Haritaya <Eşleme <String, Dize>

+6

niçin sadece ilk 'List ' a 'List >' yapmıyorsunuz? – SomeJavaGuy

+0

Çünkü harita için giriş her zaman değil Dize –

+0

Ham türleri kullandığınızda ne olur. – bcsb1001

cevap

1
class MapComparator<K,V extends Comparable<V>> implements Comparator<Map<K,V>> { 

    public int compare(Map<K,V> m1, Map<K,V> m2) { 
    return m1.get(sortby).compareTo(m2.get(sortby)); 
    } 

} 
+0

Teşekkür ederiz @HannoBinder –

1

lm ve m değişkenleri için ham türleri kullanıyorsunuz. Aşağıdaki için kodunuzu değiştirebilirsiniz:

List<Map<String, String>> lm = new ArrayList<>(); 
Map<String, String> m = new HashMap<>(); 
// ... 

m = new HashMap<>(); 
// ... 

for (Map<String, String> map : lm) 
{ 
    // ... 
} 

// ... 

for (Map<String, String> map : lm) 
{ 
    // ... 
} 

Not ArrayList yapıcı atama (Map<String, String>) sol taraftan tip anlaşılmaktadır belirten <Map> yerine <> kullandığı. Ayrıca şöyle yazabiliriz:

List<Map<String, String>> lm = new ArrayList<Map<String, String>>() 

aynı HashMap yapıcıları için de geçerlidir.

+0

OP, girişinin her zaman bir String olmadığını, yani kaynak harita için 'Map ' kullanamayacağını söyledi. – Tom

+0

Yorumda @KevinEsche yanıtından nasıl farklıdır? –

İlgili konular