
Implementacija operacije lijevog preklapanja, počet ćemo razmatranjem jednostavnog primjera sabiranja liste cijelih brojeva `
- Kreirajte funkciju pod nazivom “leftFold” koja prihvaća listu cijelih brojeva i početnu vrijednost akumulatora
- Iterirajte kroz listu, dodajući svaki element u akumulator
- Vrati konačnu vrijednost akumulatora
`
Ispod je Java implementacija za ovaj problem:
import java.util.List;
public class LeftFold {
public static int leftFold(List<Integer> list, int accumulator) {
for (int element : list) {
accumulator += element;
}
return accumulator;
}
}
Razumijevanje koda lijevog preklopa
Da bismo shvatili unutrašnje djelovanje operacije lijevog preklapanja, prvo se moramo fokusirati na dva glavna aspekta: ulaznu listu i početnu vrijednost akumulatora.
U primjeru koda koji je dat iznad, funkcija “leftFold” je dizajnirana da zbroji sve cijele brojeve na datoj listi. Početna vrijednost akumulatora se daje kao drugi argument funkciji. Zatim koristimo for-each petlju za ponavljanje kroz svaki element na listi. Trenutni element se dodaje u akumulator za svaku iteraciju, a operacija se nastavlja sve dok se lista u potpunosti ne obradi. Konačna vrijednost akumulatora se vraća na kraju funkcije.
Korištenje Java tokova za operacije lijevog preklopa
Pojava Jave 8 opravdala je uvođenje novog uslužnog programa: Java Streams. Java Streams pojednostavljuje mnoge funkcionalne operacije programiranja, uključujući operacije lijevog preklapanja.
Sljedeće je alternativno rješenje za problem sumiranja lijevog preklopa koristeći Java Streams i funkciju reduciranja ():
import java.util.List;
import java.util.stream.Stream;
public class LeftFoldUsingStreams {
public static int leftFold(List<Integer> list, int initialValue) {
return list.stream().reduce(initialValue, Integer::sum);
}
}
U gornjem isječku koda koristimo funkciju reducira () koju nudi Java Streams. Prenošenjem početne vrijednosti i reference metode za sabiranje cijelih brojeva, Java Streams uredno rukuje operacijom lijevog preklapanja, zbrajajući sve elemente na listi.
Istraživanje drugih biblioteka i funkcija povezanih sa preklopom
Osim Java Stream-a, postoji nekoliko drugih biblioteka i funkcija koje služe za preklapanje operacija. Na primjer, biblioteka Apache Commons pruža klasu CollectionUtils koja pojednostavljuje obradu liste ili kolekcije. Još jedan popularan izbor je biblioteka Guava koju je razvio Google koja nudi funkcionalne mogućnosti programiranja i uslužne programe sposobne za rješavanje različitih problema, uključujući operacije lijevog preklopa.
Zaključno, lijevo savijanje je moćna tehnika u funkcionalnom programiranju, a sa Javom, programeri imaju različite opcije za rješavanje takvih problema, bilo da se radi o Java Streamovima ili vanjskim bibliotekama kao što su Apache Commons i Google Guava. Ključni zaključak je u potpunosti razumjeti zahtjeve problema prije nego što odlučite koji pristup ili biblioteku implementirati.