Advertisement
crassus9999

Untitled

Apr 16th, 2014
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.50 KB | None | 0 0
  1. package cz.cvut.k36.pr2.hw.hw06.impl;
  2.  
  3. import cz.cvut.k36.pr2.hw.hw06.Function;
  4. import cz.cvut.k36.pr2.hw.hw06.Pr2List;
  5. import cz.cvut.k36.pr2.hw.hw06.Predicate;
  6. import java.util.Iterator;
  7.  
  8. /**
  9.  *
  10.  * @author Lukas
  11.  * @param <T>
  12.  */
  13. public class List<T> implements Pr2List<T> {
  14.     final T head;
  15.     final Pr2List<T> tail;
  16.    
  17.     public List(T head, Pr2List<T> tail) {
  18.         this.head = head;
  19.         this.tail = tail;
  20.     }
  21.    
  22.     @Override
  23.     public Pr2List<T> append(T t) {
  24.         return new List<>(head, tail.append(t));
  25.     }
  26.  
  27.     @Override
  28.     public Pr2List<T> cons(T t) {
  29.         return new List<>(t, this);
  30.     }
  31.  
  32.     @Override
  33.     public boolean isEmpty() {
  34.         return false;
  35.     }
  36.  
  37.     @Override
  38.     public Pr2List<T> filter(Predicate<T> predicate) {
  39.         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  40.     }
  41.  
  42.     @Override
  43.     public <O> Pr2List<O> map(Function<T, O> function) {
  44.         return new Pr2List(function.apply(head), tail.map(function));
  45.     }
  46.  
  47.     @Override
  48.     public T head() {
  49.         return head;
  50.     }
  51.  
  52.     @Override
  53.     public Pr2List<T> tail() {
  54.         return tail;
  55.     }
  56.  
  57.     @Override
  58.     public Pr2List<T> view() {
  59.         return new View<T>(this);
  60.     }
  61.  
  62.     @Override
  63.     public int size() {
  64.         return 1 + tail.size();
  65.     }
  66.  
  67.     @Override
  68.     public Iterator<T> iterator() {
  69.         return new ListIterator<T>(this);
  70.     }
  71.    
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement