Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///////////// LIST CREATOR//////////////////
- /**
- *
- * @author Ficek Paweł S14040
- *
- */
- package zad1;
- import java.util.*;
- public class ListCreator<T> { // Uwaga: klasa musi być sparametrtyzowana
- private List<T> list;
- public ListCreator(final List<T> list) {
- this.list = list;
- }
- public static <T> ListCreator<T> collectFrom(List<T> list){
- return new ListCreator<>(list);
- }
- public ListCreator<T> when(Selector<T> sel){
- List<T> resultList = new ArrayList<>();
- for (final T element : this.list) {
- if(sel.select(element)){
- resultList.add(element);
- }
- }
- this.list = resultList;
- return this;
- }
- public <S> List<S> mapEvery(Mapper<T,S> map){
- final List<S> resultList = new ArrayList<>();
- for (final T element : this.list) {
- resultList.add((S) map.map(element));
- }
- return resultList;
- }
- }
- //////////////////////MAIN//////////////////////////
- /**
- *
- * @author Ficek Paweł S14040
- *
- */
- package zad1;
- import java.util.*;
- public class Main {
- public Main() {
- List<Integer> src1 = Arrays.asList(1, 7, 9, 11, 12);
- System.out.println(test1(src1));
- List<String> src2 = Arrays.asList("a", "zzzz", "vvvvvvv" );
- System.out.println(test2(src2));
- }
- public List<Integer> test1(List<Integer> src) {
- Selector<Integer> sel = n -> n < 10;/*<-- definicja selektora; bez lambda-wyrażeń; nazwa zmiennej sel */
- Mapper<Integer,Integer> map = n -> n+10;/*<-- definicja mappera; bez lambda-wyrażeń; nazwa zmiennej map */
- return ListCreator. /*<-- zwrot wyniku
- uzyskanego przez wywołanie statycznej metody klasy ListCreator:
- */ collectFrom(src).when(sel).mapEvery(map);
- }
- public List<Integer> test2(List<String> src) {
- Selector<String> sel = n -> n.length() > 3;/*<-- definicja selektora; bez lambda-wyrażeń; nazwa zmiennej sel */
- Mapper<String,Integer> map = n -> n.length()+10 ;/*<-- definicja mappera; bez lambda-wyrażeń; nazwa zmiennej map */
- return ListCreator. /*<-- zwrot wyniku
- uzyskanego przez wywołanie statycznej metody klasy ListCreator:
- */collectFrom(src).when(sel).mapEvery(map);
- }
- public static void main(String[] args) {
- new Main();
- }
- }
- ///////////////////////// SELECTOR///////////////
- /**
- *
- * @author Ficek Paweł S14040
- *
- */
- package zad1;
- public interface Selector<T> { // Uwaga: interfejs musi być sparametrtyzowany
- boolean select(T t);
- }
- /////////////////////////MAPPER////////////////////////////////
- /**
- *
- * @author Ficek Paweł S14040
- *
- */
- package zad1;
- public interface Mapper<T,S> { // Uwaga: interfejs musi być sparametrtyzowany
- S map(T t);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement