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

org.aksw.jena_sparql_api.utils.Pair Maven / Gradle / Ivy

There is a newer version: 3.17.0-1
Show newest version
package org.aksw.jena_sparql_api.utils;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;


/**
 * A pair is a collection having 2 entries of same type
 *
 * Note: For a pair with two different types, use Map.SimpleEntry
 *
 * @author raven
 *
 * @param 
 */
public class Pair
    //extends AbstractList
    implements Entry, Iterable, Serializable
{
    private static final long serialVersionUID = 7898871427844686243L;

    protected T key;
    protected T value;

    public Pair(Entry entry) {
        super();
        this.key = entry.getKey();
        this.value = entry.getValue();
    }

    public Pair(T key, T value) {
        super();
        this.key = key;
        this.value = value;
    }


    @Override
    public Iterator iterator() {
        List tmp = Arrays.asList(key, value);
        return tmp.iterator();
    }

//    @Override
//    public void add(int index, T element) {
//        set(index, element);
//    }

    //@Override
    public T set(int index, T element) {
        switch(index) {
        case 0: key = element; break;
        case 1: value = element; break;
        default: throw new IndexOutOfBoundsException("Requested index: " + index);
        }
        return element;
    }

    //@Override
    public T get(int index) {
        T result;
        switch(index) {
        case 0: result = key; break;
        case 1: result = value; break;
        default: throw new IndexOutOfBoundsException("Requested index: " + index);
        }
        return result;
    }

    //@Override
    public int size() {
        return 2;
    }

    @Override
    public T getKey() {
        return key;
    }

    @Override
    public T getValue() {
        return value;
    }

    @Override
    public T setValue(T value) {
        throw new UnsupportedOperationException();
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((key == null) ? 0 : key.hashCode());
        result = prime * result + ((value == null) ? 0 : value.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Pair other = (Pair) obj;
        if (key == null) {
            if (other.key != null)
                return false;
        } else if (!key.equals(other.key))
            return false;
        if (value == null) {
            if (other.value != null)
                return false;
        } else if (!value.equals(other.value))
            return false;
        return true;
    }

    @Override
    public String toString() {
        return "Pair [key=" + key + ", value=" + value + "]";
    }



}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy