2016-03-19 28 views
1

Bazı metinlerle başlayan öğeleri alabildiğim java API'da bir koleksiyon olup olmadığını arıyorum. Ben "a" yazarsanız ben koleksiyonJava Elemanları düzenli ifadeyi kullanarak filtrelemek için kullanılır

abc 
abbb 
adf 
abab 
dfg 
cfg 

aşağıdaki öğeler varsa Örneğin

, o zaman karakter "a" ile başlayan tüm unsurları dönmelidir.

+0

Koleksiyon API'sinde buna benzer bir şey eklemek mantıklı olmaz. Sadece dizelere uygulanır ve çok özel bir gereksinimdir. Bu kendini kodlamak zorunda kalacağın bir şey. – RealSkeptic

cevap

2

basit bir boru hattı yapabilirsiniz kutudan dışarı ama bu filtrelemeyi verebilir hiçbir koleksiyon yoktur (Java 8 ihtiyacı):

filtreleme izin üçüncü taraf kütüphaneler vardır
filteredList = collection.stream() 
         .filter(e -> e.startsWith("a")) 
         .collect(Collectors.toList()); 

koleksiyonlar da ayrıca: Guava'nın Collections2#filter. Apache Commons koleksiyonlarından

  • ColectionUtils#filter. Bağlantılı Javadoc açıklamaları, her yöntemin filtrelemeyi tam olarak nasıl yaptığını (yani, belirli bir koleksiyonu değiştirip değiştirmediğini veya yeni bir tane döndürdüğünü) açıklamaktadır.


    Veya sadece bir for döngü ( ve öncesi) kullanarak: Sen regex gerekmez

    List<String> filteredList = new ArrayList<String>(); 
    for(Iterator<String> iterator = collection.iterator(); iterator.hasNext();) { 
        String str = iterator.next(); 
        if(str.startsWith("a")) { 
         filteredList.add(str); 
        } 
    } 
    
  • +2

    @ AR_3, cevabınız için teşekkür ederiz, Bu özellik java 1.8'de mevcut olduğunu önerdi, java 1.6'yı kullanmanın bunu yapmanın kolay yolu var – KItis