Günlük programımda Java 8 özelliklerini (lambda ve akışlar gibi) nasıl kullanacağımı öğrenmeye çalışıyorum çünkü daha temiz kodlar oluşturuyor.Java 8 akışları, lambdas
Şu anda üzerinde çalışıyorum: Yerel bir dosyadan bir dize akışı alıyorum, sonra da daha sonra nesnelere dönüştüğüm bazı veriler. Giriş dosyası yapısı şöyle görünür:
Airport name; Country; Continent; some number;
Ve benim kod şöyle görünür:
:public class AirportConsumer implements AirportAPI {
List<Airport> airports = new ArrayList<Airport>();
@Override
public Stream<Airport> getAirports() {
Stream<String> stream = null;
try {
stream = Files.lines(Paths.get("resources/planes.txt"));
stream.forEach(line -> createAirport(line));
} catch (IOException e) {
e.printStackTrace();
}
return airports.stream();
}
public void createAirport(String line) {
String airport, country, continent;
int length;
airport = line.substring(0, line.indexOf(';')).trim();
line = line.replace(airport + ";", "");
country = line.substring(0,line.indexOf(';')).trim();
line = line.replace(country + ";", "");
continent = line.substring(0,line.indexOf(';')).trim();
line = line.replace(continent + ";", "");
length = Integer.parseInt(line.substring(0,line.indexOf(';')).trim());
airports.add(new Airport(airport, country, continent, length));
}
}
Ve benim ana sınıfında Sonuçlara nesne akışı üzerinden yineleme ve çıktısını
public class Main {
public void toString(Airport t){
System.out.println(t.getName() + " " + t.getContinent());
}
public static void main(String[] args) throws IOException {
Main m = new Main();
m.whatever();
}
private void whatever() throws IOException {
AirportAPI k = new AirportConsumer();
Stream<Airport> s;
s = k.getAirports();
s.forEach(this::toString);
}
}
Sorum şu: Bu kodu nasıl eniyileyebilirim, bu yüzden satırları ayrı ayrı dosyadan ayrıştırmak zorunda değilim, bunun yerine kaynak dosyadan düz bir şekilde nesne akışı oluşturmak zorunda kalmıyorum? Yoksa bunu yapabileceğim ölçü nedir?
Not: dosyayı kapatmanız gerekir: 'try (Akım lines = Dosyalar.line (...)) {lines.map (xxx) .collect (...)};' –
assylias