All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jmmo.tuple.Tuples Maven / Gradle / Ivy

package org.jmmo.tuple;

import java.util.Iterator;

public class Tuples {
    private Tuples() {}

    public static Tuple0 of() {
        return Tuple0.INSTANCE;
    }

    public static  Tuple1 of(V0 v0) {
        return new Tuple1<>(v0);
    }

    public static  Tuple2 of(V0 v0, V1 v1) {
        return new Tuple2<>(v0, v1);
    }

    public static  Tuple3 of(V0 v0, V1 v1, V2 v2) {
        return new Tuple3<>(v0, v1, v2);
    }

    public static  Tuple4 of(V0 v0, V1 v1, V2 v2, V3 v3) {
        return new Tuple4<>(v0, v1, v2, v3);
    }

    public static  Tuple5 of(V0 v0, V1 v1, V2 v2, V3 v3, V4 v4) {
        return new Tuple5<>(v0, v1, v2, v3, v4);
    }

    public static  Tuple6 of(V0 v0, V1 v1, V2 v2, V3 v3, V4 v4, V5 v5) {
        return new Tuple6<>(v0, v1, v2, v3, v4, v5);
    }

    public static  Tuple7 of(V0 v0, V1 v1, V2 v2, V3 v3, V4 v4,
                                                                                     V5 v5, V6 v6) {
        return new Tuple7<>(v0, v1, v2, v3, v4, v5, v6);
    }

    public static  Tuple8 of(
            V0 v0, V1 v1, V2 v2, V3 v3, V4 v4, V5 v5, V6 v6, V7 v7) {
        return new Tuple8<>(v0, v1, v2, v3, v4, v5, v6, v7);
    }

    public static  Tuple9 of(
            V0 v0, V1 v1, V2 v2, V3 v3, V4 v4, V5 v5, V6 v6, V7 v7, V8 v8) {
        return new Tuple9<>(v0, v1, v2, v3, v4, v5, v6, v7, v8);
    }

    public static  Tuple fromArray(A[] values)  {
        switch (values.length) {
            case 0:
                return of();
            case 1:
                return Tuple1.fromArray(values);
            case 2:
                return Tuple2.fromArray(values);
            case 3:
                return Tuple3.fromArray(values);
            case 4:
                return Tuple4.fromArray(values);
            case 5:
                return Tuple5.fromArray(values);
            case 6:
                return Tuple6.fromArray(values);
            case 7:
                return Tuple7.fromArray(values);
            case 8:
                return Tuple8.fromArray(values);
            case 9:
                return Tuple9.fromArray(values);
            default:
                throw new IllegalArgumentException("Too many values only 9 is allowed");
        }
    }

    public static  Tuple fromIterator(Iterator iterator) {
        if (iterator.hasNext()) {
            V value1 = iterator.next();
            if (iterator.hasNext()) {
                V value2 = iterator.next();
                if (iterator.hasNext()) {
                    V value3 = iterator.next();
                    if (iterator.hasNext()) {
                        V value4 = iterator.next();
                        if (iterator.hasNext()) {
                            V value5 = iterator.next();
                            if (iterator.hasNext()) {
                                V value6 = iterator.next();
                                if (iterator.hasNext()) {
                                    V value7 = iterator.next();
                                    if (iterator.hasNext()) {
                                        V value8 = iterator.next();
                                        if (iterator.hasNext()) {
                                            V value9 = iterator.next();
                                            if (iterator.hasNext()) {
                                                throw new IllegalArgumentException("Too many values only 9 is allowed");
                                            } else {
                                                return of(value1, value2, value3, value4, value5, value6, value7, value8, value9);
                                            }
                                        } else {
                                            return of(value1, value2, value3, value4, value5, value6, value7, value8);
                                        }
                                    } else {
                                        return of(value1, value2, value3, value4, value5, value6, value7);
                                    }
                                } else {
                                    return of(value1, value2, value3, value4, value5, value6);
                                }
                            } else {
                                return of(value1, value2, value3, value4, value5);
                            }
                        } else {
                            return of(value1, value2, value3, value4);
                        }
                    } else {
                        return of(value1, value2, value3);
                    }
                } else {
                    return of(value1, value2);
                }
            } else {
                return of(value1);
            }
        } else {
            return of();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy