001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.data.osm; 003 004import java.io.Serializable; 005import java.util.Objects; 006import java.util.Set; 007 008/** 009 * Class representing multiple values of a given key. 010 * @since 15376 011 */ 012public class Tags implements Serializable { 013 014 private static final long serialVersionUID = 1; 015 016 private final String key; 017 private final Set<String> values; 018 019 /** 020 * Constructs a new {@code Tags}. 021 * @param key the key. Must not be null 022 * @param values the values. Must not be null 023 */ 024 public Tags(String key, Set<String> values) { 025 this.key = Objects.requireNonNull(key); 026 this.values = Objects.requireNonNull(values); 027 } 028 029 /** 030 * Returns the key. 031 * @return the key 032 */ 033 public String getKey() { 034 return key; 035 } 036 037 /** 038 * Returns the values. 039 * @return the values 040 */ 041 public Set<String> getValues() { 042 return values; 043 } 044 045 @Override 046 public int hashCode() { 047 return Objects.hash(key, values); 048 } 049 050 @Override 051 public boolean equals(Object obj) { 052 if (this == obj) 053 return true; 054 if (obj == null || getClass() != obj.getClass()) 055 return false; 056 Tags other = (Tags) obj; 057 return Objects.equals(key, other.key) && Objects.equals(values, other.values); 058 } 059 060 @Override 061 public String toString() { 062 return "Tags [key=" + key + ", values=" + values + ']'; 063 } 064}