Basit bir koleksiyon sorularım var. Set<String>
nesnesine sahibim. Bu sette dizelerin numaralandırılmasını istiyorum. Bu konuda gitmek için en temiz/en iyi yolu nedir?Java: Set sayımı <String>
cevap
DÜZENLEME: Kendiniz yazmanıza gerek yoktur (her ne kadar bu uygulamayı posteritlik için terk edersem de) - Kevin Bourrillion'un JDK'daki yanıtını görün. Eğer gerçekten bir numaralandırma ihtiyaç olursa
, kullanabilirsiniz olabilir:
Enumeration<String> x = new Vector(set).elements();
Hiç mümkünse Iterable<E>
kullanmak daha iyi olurdu ama ...
Daha iyi bir alternatiftir Iterator<E>
etrafında küçük bir sarıcı sınıf yazmak. Eğer herhangi bir for döngüsü, geçerli aracılığıyla matematiksel anlamda en temiz Bunu yapmanın bir yolu olan numaralandırma demek varsayarsak
import java.util.*;
class IteratorEnumeration<E> implements Enumeration<E>
{
private final Iterator<E> iterator;
public IteratorEnumeration(Iterator<E> iterator)
{
this.iterator = iterator;
}
public E nextElement() {
return iterator.next();
}
public boolean hasMoreElements() {
return iterator.hasNext();
}
}
public class Test {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
Enumeration<String> x = new IteratorEnumeration<String>(set.iterator());
}
}
@Downvoter: Yorum yapmak ister misiniz? –
Az önce oy kullandım. JDK, Kevin Bourrillion tarafından işaret edildiği gibi sizin için yaptığınız bir statik kullanım yöntemine sahip olduğunda kendi uygulamanızı yazmaya gerek yoktur. – Snekse
@Snekse: Önceki downvoter çok şey söylemiş olsaydı, bu yararlı olurdu. Cevabımı kabul edilen kişi olarak şimdi silemiyorum, ama Kevin'ın dikkatini çekebilirim ... –
: Eğer yok Bu şekilde sadece Enumeration<E>
bir Yapılanma Modeli bulmak için bir kopyasını almak Iterable
uygulayan sınıfı: Eğer gerçekten bir Enumeration
gerektiriyorsa
Set<String> strs = ...
for (String s : strs) {
...
}
Eğer iterator()
arayarak iade Iterator
sarmak için bir adaptör sınıf uygulamak olabilir. Apache Koleksiyonları kitaplığında bir adaptör sınıfı var: IteratorEnumeration
.
Yoksa Google'ın Guava kitaplığını kullanabilirsiniz:
Set<String> mySet = ...
Enumeration<String> = Iterators.asEnumeration(mySet.iterator());
Downvoter ...Yorumlara dikkat etmek ister misiniz? – Adamski
java.util.Collections.enumeration(set)
Javadoc
belirtilen koleksiyonu üzerinde bir numaralandırma döndürür. Bu, girişi olarak bir numaralandırma gerektiren eski API'lerle birlikte çalışabilirlik sağlar.
Tamam, cevabımın ters olduğunu anlıyorum, ama bunun nedeni, gerçekten söylenmesi gereken şey. :) Bu yöntem JDK'dadır ve tam olarak * posterin ne istediğini * yapar. En son sıraya girmesi garip. –
Etkin Java Öğesi 47: Kütüphaneleri bilir ve kullanır – Ray
- 1. Set <String> Set []?
- 2. Set <T>
- 3. SET JAVA_HOME jenv java sürüm
- 4. Java set harita içine koyma
- 5. Java, set kimliği için JButton
- 6. Hareketli veri Java <code>Set</code> aşağıdakilere sahip
- 7. seçme sayımı
- 8. MySQL sayımı
- 9. Java - Dersler ve Nesneler, Set çalışmıyor mu?
- 10. java - trustStore yolu - set özelliği çalışmıyor?
- 11. Java Neden "Set-Cookie" başlıkları okunmuyor?
- 12. Bir Java programında bir SQL sayımı() sorgusuna nasıl erişirsiniz
- 13. std :: set <K, C> :: operatörü <(const std :: <K, C> & set) ... daha az()
- 14. SET
- 15. MsBuild koşulu sayımı öğeleri
- 16. SQLDataReader Satır Sayımı
- 17. JPA sayımı NamedQuery
- 18. XPath sayımı() ile() içerir
- 19. python sayım sayımı testleri
- 20. MongoDB, Çoklu sayımı
- 21. R: ardışık gün sayımı
- 22. Parametre sayımı eşleşmiyor()
- 23. Satır sonu sayımı
- 24. Parametre Sayımı Uyumsuzluk
- 25. Domuz sayımı sorgusu
- 26. UILocalNotification sayımı Tekrarlanan Bildirim
- 27. Bit sayımı için metaprogram
- 28. Geriye sayımı ve sonucu
- 29. Java "<<" ne anlama geliyor?
- 30. set-araba !, set-cdr! raket içinde ilişkisiz?
java.util'deki numaralandırma Not:? Bunun yerine java.util.Iterable kullanmak için herhangi bir sebep? –
evet .. Çünkü özellikle bir Numaralandırma döndüren bir yöntemi geçersiz kılıyorum. –
Charlotte
Bunun yerine en çok oylanan cevabı kabul etmelisiniz. –