001package co.codewizards.cloudstore.core.util; 002 003import java.util.Map; 004 005public class Pair<K, V> implements Map.Entry<K, V> { 006 007 private final K key; 008 009 private final V value; 010 011 public Pair(K key, V value) { 012 this.key = key; 013 this.value = value; 014 } 015 016 @Override 017 public K getKey() { 018 return key; 019 } 020 021 @Override 022 public V getValue() { 023 return value; 024 } 025 026 @Override 027 public V setValue(V value) { 028 throw new UnsupportedOperationException("Pair is read-only!"); 029 } 030 031 @Override 032 public int hashCode() { 033 final int prime = 31; 034 int result = 1; 035 result = prime * result + ((key == null) ? 0 : key.hashCode()); 036 result = prime * result + ((value == null) ? 0 : value.hashCode()); 037 return result; 038 } 039 040 @Override 041 public boolean equals(final Object obj) { 042 if (this == obj) 043 return true; 044 if (obj == null) 045 return false; 046 if (getClass() != obj.getClass()) 047 return false; 048 final Pair<?, ?> other = (Pair<?, ?>) obj; 049 return equal(this.key, other.key) && equal(this.value, other.value); 050 } 051 052 private static final boolean equal(final Object one, final Object two) { 053 return one == null ? two == null : one.equals(two); 054 } 055 056 @Override 057 public String toString() { 058 return String.format("%s[%s, %s]", getClass().getSimpleName(), key, value); 059 } 060}