2015-03-19 6 views

cevap

20

kocko cevabı ve Holger'in yorumun bir derleme:

BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
Stream<String> stream = in.lines().limit(numberOfLinesToBeRead); 
1

Genellikle standart girdi satır satır okunur, bu yüzden tüm oku satırını bir koleksiyona depolamak ve sonra üzerinde çalışan bir Stream oluşturmak. Örneğin

:

List<String> allReadLines = new ArrayList<String>(); 

BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
String s; 
while ((s = in.readLine()) != null && s.length() != 0) { 
    allReadLines.add(s); 
} 

Stream<String> stream = allReadLines.stream(); 
+3

Eğer bir 'BufferedReader' varsa, satırları bir [Koleksiyon] 'a [' Stream'] almak için saklamak için gerek yoktur (http://docs.oracle. com/javase/8/docs/aPI/java/io/BufferedReader.html # çizgiler,). Daha büyük sorun, etkileşimli konsolların genellikle bir dosya sonu içermemesidir… – Holger

+0

Güzel olan. Bu yeni tanıttı yöntemi bilmiyordum. Teşekkürler, @Holger. :) –

+0

Harika, BufferedReader.lines bu cevaptaki ayrıntıların çoğunu ortadan kaldıracaktır. Okunacak satırların sayısı biliniyorsa, o zaman .limit (numberOfLines) burada çalışmalıdır. –