Örnek

Sınıvda Başarılı Olan Öğrencileri Stream İle Bulan Bir Örnek

Aşağıdaki örnekte bir sınavda 50 ve üzeri alan öğrencileri bulan ve onu en yüksek puandan en düşük puana gelecek şekilde sıralayan ve ekrana basan örnek aşağıdaki gibidir :
package com.test.stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamTestExam {
	
	public static void main(String[] args) {
		
		List<ExamResult> results=new ArrayList<ExamResult>();
		results.add(new ExamResult("Ali Kaya", 56));
		results.add(new ExamResult("Veli Deniz", 60));
		results.add(new ExamResult("Ayşe Gül", 14));
		results.add(new ExamResult("Ahmet Güler", 44));
		results.add(new ExamResult("Arzu Yanar", 80));
		
		List<ExamResult> resultList=results.stream()
			.filter(result -> result.getPoint() >= 50)
			.sorted((result1,result2) -> 
				((Integer)result2.getPoint()).compareTo(result1.getPoint()))
			.collect(Collectors.toList());
		
		resultList.forEach(r -> System.out.println(r.getName()+":"+r.getPoint()));
		
	}
}
ExamResult sınıfı aşağıdaki gibidir:
package com.test.stream;
public class ExamResult {
	
	public ExamResult(String name, int point) {
		this.name=name;
		this.point=point;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getPoint() {
		return point;
	}
	public void setPoint(int point) {
		this.point = point;
	}
	
	private String name;
	private int point;
	
}
İlk önce .filter(result -> result.getPoint() >= 50) ile 50 ve üstünü almış öğrencileri alıyoruz. .sorted((result1,result2) -> ((Integer)result2.getPoint()).compareTo(result1.getPoint())) ile öğrencileri sınav sorularına göre ters olarak sıralıyoruz. (result2 ile result1 ters sırada olduğuna dikkat ediniz). Ardından .collect(Collectors.toList()); ile sonucu bir listeye dolduruyoruz. En sondaki satırda ise tüm elemanları ekrana bastırıyoruz :
Arzu Yanar:80
Veli Deniz:60
Ali Kaya:56
Listeyi almadan da bastırabilirdik :
results.stream()
.filter(result -> result.getPoint() >= 50)
.sorted((result1,result2) -> 
	((Integer)result2.getPoint()).compareTo(result1.getPoint()))
.forEach(r -> System.out.println(r.getName()+":"+r.getPoint()));

Burada collect ile bir listeye doldurmak yetine doğrudan foreach'i çalıştırdık.
zafer.teker , 13.10.2016

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir

Misafir Yorumları




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir