2014-07-26 24 views
6

Set<Object> var.Dönüştürme <Object> Koleksiyon <String>

Bundan bir Collection<String> almam gerekiyor.

Tüm Nesneleri eklemek ve yayınlamak için bir döngü oluşturmayı düşünebilirim, ancak bu çirkin ve muhtemelen de yavaştır. Doğru yol

@Override 
public Collection<String> keys() 
{ 
    // props is based on HashMap 
    Set<String> keys = new HashSet<>(); 
    for (Object o : props.keySet()) { 
     keys.add((String) o); 
    } 
    return keys; 
} 

nedir? Eğer HashSet içindeki tüm Object ler dizeleri olduğunu biliyorsanız

+0

Hangi Java sürümünü kullanıyorsunuz? –

+1

Nesne'den 'String''e nasıl dönüşeceksiniz? Her birinde 'toString()' i çağırmanız mı gerekiyor? Ya da nesnelerin 'String' olduğuna dair önceden bir bilginiz var mı? –

+0

Evet, onların Strings olduğunu biliyorum. Güncellenen soruyu kontrol edin, şimdi daha açık. Ve @LuiggiMendoza, Java 7. – MightyPork

cevap

6

, sadece yayınlayabilmek için:

Collection<String> set = (Collection<String>)(Collection<?>)props.keySet(); 

Java HashSet kendisi olduğunu zamanında bilmiyor yani silinmeye ile eşdeğer ilaç uygular Bir HashSet<Object> - sadece bir HashSet olduğunu bilir ve derleyici, programcıların çalışma zamanı istisnaları oluşturacak şeyler yapmasını engellemesine yardımcı olur. Ama ne yaptığını biliyorsan, derleyici bu oyuncuyu yapmanı engellemez.

+0

Üzgünüm, yeterince açık değildim. Cevabın hala yaptığım şey için geçerli olup olmadığını kontrol edin. – MightyPork

+0

@MightyPork: Evet, cevap hala geçerli. Dönüşüm için belirli bir adım atmanız gerekmediğinden (sadece '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''; – StriplingWarrior

+0

İyi değil, 'return (Set ) props.keySet();' ancak " Setinden " olarak ayarlanamaz. – MightyPork

İlgili konular