Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package cz.cvut.k36.pr2.hw.hw06.impl;
- import cz.cvut.k36.pr2.hw.hw06.Function;
- import cz.cvut.k36.pr2.hw.hw06.Pr2List;
- import cz.cvut.k36.pr2.hw.hw06.Predicate;
- import java.util.Iterator;
- /**
- *
- * @author Lukas
- * @param <T>
- */
- public class List<T> implements Pr2List<T> {
- final T head;
- final Pr2List<T> tail;
- public List(T head, Pr2List<T> tail) {
- this.head = head;
- this.tail = tail;
- }
- @Override
- public Pr2List<T> append(T t) {
- return new List<>(head, tail.append(t));
- }
- @Override
- public Pr2List<T> cons(T t) {
- return new List<>(t, this);
- }
- @Override
- public boolean isEmpty() {
- return false;
- }
- @Override
- public Pr2List<T> filter(Predicate<T> predicate) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
- }
- @Override
- public <O> Pr2List<O> map(Function<T, O> function) {
- return new Pr2List(function.apply(head), tail.map(function));
- }
- @Override
- public T head() {
- return head;
- }
- @Override
- public Pr2List<T> tail() {
- return tail;
- }
- @Override
- public Pr2List<T> view() {
- return new View<T>(this);
- }
- @Override
- public int size() {
- return 1 + tail.size();
- }
- @Override
- public Iterator<T> iterator() {
- return new ListIterator<T>(this);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement