2016-04-13 101 views
0

Bir Vector üzerinde bulmaya çalışıyorum, ne kadar sayıda indeks, belirli bir harf veya sayı ile başlıyor.Verilen bir harf/sayı ile başlayan bir Vector öğesindeki öğeler

vector.indexOf("A"); ve vector.lastIndexOf("A");'u denedim, ancak elbette yapmaya çalıştığım şey için "işe yaramaz" lar, çünkü "A" ve başka hiçbir şey olmayan bir konum bulmaya çalıştıkları için.

Bunu yapmak için bir Java yöntemi olup olmadığını veya "kendi başıma" yapmam gerekirse, nasıl yapılırsa, nasıl yapılır sürecine biraz yol gösterici olacağına karar verdim.

+1

Bir döngü kullanın. Ya da Java 8 kullanıyorsanız, bir Akış. Vector'in artık kullanılmaması gerektiğini ve bunun 15 yıl boyunca doğru olduğunu unutmayın. ArrayList kullan. –

cevap

1

istediğiniz (veya can) akışları veya lambdas kullanmazsanız da burada bu küçük döngü kullanabilirsiniz: o A ve daha sonra sayma ile başlıyorsa

int count=0; 
    for (int i = 0; i < vec.size(); i++) { 
     count = vec.get(i).charAt(0)=='A' ? count+1 : count; 
    } 

Hiçbir büyük bir şey, sadece her elemanı kontrol yukarı.

+0

Güzel ve basit, kodumuma uyarlamak için burada ve orada düzeltmem gerekiyordu, ancak bunun dışında daha iyi bir çözüm düşünemiyorum. Çok teşekkürler @Jankapunkt –

1

Java8'de, filter() ve count() gibi işlevsel stillere erişmek için Streams kullanabilirsiniz. Koleksiyonunuzda bir Akış almak için stream() yöntemini kullanın.

+0

Kesinlikle kontrol edeceğim, bilgi için çok teşekkürler Julien. Ne yazık ki sadece bir sorumu kabul edebilirim ya da ikinize de verebilirim. –

+0

@ this.user3272243 Bu, tahmin ettiğim kodu göndermememi öğretecek. : p Java 8'in akışlarına ve diğer özelliklerine bir göz attığınızdan emin olun, bu sürüm dili büyük ölçüde geliştirir, bu yüzden onu kullanmamak bir utanç olur. –