Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   *  Copyright (c) 2012 Jan Kotek
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *    http://www.apache.org/licenses/LICENSE-2.0
   *
  *  Unless required by applicable law or agreed to in writing, software
  *  distributed under the License is distributed on an "AS IS" BASIS,
  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
 
 package org.mapdb;
 
Functional stuff. Tuples, function, callback methods etc..

Author(s):
Jan Kotek
 
 @SuppressWarnings({ "unchecked""rawtypes" })
 public final class Fun {
 
     private Fun(){}

    
positive infinity object. Is larger than anything else. Used in tuple comparators. Negative infinity is represented by 'null'
 
     public static final Object HI = new Object(){
         @Override public String toString() {
             return "HI";
         }
     };

    
autocast version of `HI
 
     public static final <A> A HI(){
         return (A) ;
     }
 
     public static <A,B> Tuple2<A,B> t2(A a, B b) {
         return new Tuple2<A, B>(a,b);
     }
 
     public static <A,B,C> Tuple3<A,B,C> t3(A a, B b, C c) {
         return new Tuple3<A, B, C>((A)a, (B)b, (C)c);
     }
 
     public static <A,B,C,D> Tuple4<A,B,C,D> t4(A a, B b, C c, D d) {
         return new Tuple4<A, B, C, D>(a,b,c,d);
     }
 
     public static <K> Function1<K,K> noTransformExtractor() {
         return new Function1<K, K>() {
             @Override
             public K run(K k) {
                 return k;
             }
         };
     }
 
 
     static public final class Tuple2<A,B> implements ComparableSerializable {
 		
     	private static final long serialVersionUID = -8816277286657643283L;
 		
 		final public A a;
         final public B b;
 
         public Tuple2(A a, B b) {
             this. = a;
             this. = b;
         }
 
         @Override public int compareTo(Object o) {
             final Tuple2 oo = (Tuple2o;
             if(!=oo.a){
                 if(==null || oo.a==return -1;
                 if(== || oo.a==nullreturn 1;
 
                 final int c = ((Comparable)).compareTo(oo.a);
                 if(c!=0) return c;
             }
 
             if(!=oo.b){
                 if(==null || oo.b==return -1;
                 if(== || oo.b==nullreturn 1;
 
                 final int i = ((Comparable)).compareTo(oo.b);
                 if(i!=0) return i;
             }
             return 0;
         }
 
         @Override public boolean equals(Object o) {
             if (this == oreturn true;
            if (o == null || getClass() != o.getClass()) return false;
            final Tuple2 tuple2 = (Tuple2o;
            if ( != null ? !.equals(tuple2.a) : tuple2.a != nullreturn false;
            if ( != null ? !.equals(tuple2.b) : tuple2.b != nullreturn false;
            return true;
        }
        @Override public int hashCode() {
            int result =  != null ? .hashCode() : 0;
            result = 31 * result + ( != null ? .hashCode() : 0);
            return result;
        }
        @Override public String toString() {
            return "Tuple2[" +  +", "++"]";
        }
    }
    final static public class Tuple3<A,B,C> implements ComparableSerializable{
    	private static final long serialVersionUID = 11785034935947868L;
    	
		final public A a;
        final public B b;
        final public C c;
        public Tuple3(A a, B b, C c) {
            this. = a;
            this. = b;
            this. = c;
        }
        @Override public int compareTo(Object o) {
            final Tuple3 oo = (Tuple3o;
            if(!=oo.a){
                if(==null || oo.a==return -1;
                if(== ||  oo.a==nullreturn 1;
                final int c = ((Comparable)).compareTo(oo.a);
                if(c!=0) return c;
            }
            if(!=oo.b){
                if(==null || oo.b==return -1;
                if(== || oo.b==nullreturn 1;
                final int i = ((Comparable)).compareTo(oo.b);
                if(i!=0) return i;
            }
            if(!=oo.c){
                if(==null || oo.c==return -1;
                if(== || oo.c==nullreturn 1;
                final int i = ((Comparable)).compareTo(oo.c);
                if(i!=0) return i;
            }
            return 0;
        }
        @Override public String toString() {
            return "Tuple3[" +  +", "++", "++"]";
        }
        @Override
        public boolean equals(Object o) {
            if (this == oreturn true;
            if (o == null || getClass() != o.getClass()) return false;
            Tuple3 tuple3 = (Tuple3o;
            if ( != null ? !.equals(tuple3.a) : tuple3.a != nullreturn false;
            if ( != null ? !.equals(tuple3.b) : tuple3.b != nullreturn false;
            if ( != null ? !.equals(tuple3.c) : tuple3.c != nullreturn false;
            return true;
        }
        @Override
        public int hashCode() {
            int result =  != null ? .hashCode() : 0;
            result = 31 * result + ( != null ? .hashCode() : 0);
            result = 31 * result + ( != null ? .hashCode() : 0);
            return result;
        }
    }
    final static public class Tuple4<A,B,C,D> implements ComparableSerializable{
    	private static final long serialVersionUID = 1630397500758650718L;
    	
		final public A a;
        final public B b;
        final public C c;
        final public D d;
        public Tuple4(A a, B b, C c, D d) {
            this. = a;
            this. = b;
            this. = c;
            this. = d;
        }
        @Override public int compareTo(Object o) {
            final Tuple4 oo = (Tuple4o;
            if(!=oo.a){
                if(==null || oo.a==return -1;
                if(== || oo.a==nullreturn 1;
                final int c = ((Comparable)).compareTo(oo.a);
                if(c!=0) return c;
            }
            if(!=oo.b){
                if(==null || oo.b==return -1;
                if(== || oo.b==nullreturn 1;
                final int i = ((Comparable)).compareTo(oo.b);
                if(i!=0) return i;
            }
            if(!=oo.c){
                if(==null || oo.c==return -1;
                if(== || oo.c==nullreturn 1;
                final int i = ((Comparable)).compareTo(oo.c);
                if(i!=0) return i;
            }
            if(!=oo.d){
                if(==null || oo.d==return -1;
                if(== || oo.d==nullreturn 1;
                final int i = ((Comparable)).compareTo(oo.d);
                if(i!=0) return i;
            }
            return 0;
        }
        @Override public String toString() {
            return "Tuple4[" +  +", "++", "++", "++"]";
        }
        @Override
        public boolean equals(Object o) {
            if (this == oreturn true;
            if (o == null || getClass() != o.getClass()) return false;
            Tuple4 tuple4 = (Tuple4o;
            if ( != null ? !.equals(tuple4.a) : tuple4.a != nullreturn false;
            if ( != null ? !.equals(tuple4.b) : tuple4.b != nullreturn false;
            if ( != null ? !.equals(tuple4.c) : tuple4.c != nullreturn false;
            if ( != null ? !.equals(tuple4.d) : tuple4.d != nullreturn false;
            return true;
        }
        @Override
        public int hashCode() {
            int result =  != null ? .hashCode() : 0;
            result = 31 * result + ( != null ? .hashCode() : 0);
            result = 31 * result + ( != null ? .hashCode() : 0);
            result = 31 * result + ( != null ? .hashCode() : 0);
            return result;
        }
    }
    public interface Function1<R,A>{
        R run(A a);
    }
    public interface Function2<R,A,B>{
        R run(A a, B b);
    }
    public interface Runnable2<A,B>{
        void run(A a, B b);
    }
    public interface Runnable3<A,B,C>{
        void run(A a, B b, C c);
    }
    public static <K,V> Fun.Function1<K,Fun.Tuple2<K,V>> keyExtractor(){
        return new Fun.Function1<K, Fun.Tuple2<K, V>>() {
            @Override
            public K run(Fun.Tuple2<K, V> t) {
                return t.a;
            }
        };
    }
    public static <K,V> Fun.Function1<V,Fun.Tuple2<K,V>> valueExtractor(){
        return new Fun.Function1<V, Fun.Tuple2<K, V>>() {
            @Override
            public V run(Fun.Tuple2<K, V> t) {
                return t.b;
            }
        };
    }
New to GrepCode? Check out our FAQ X