@Override public int compareTo(Tags other) { int cmp = 0; Iterator<Map.Entry<String, MetricValue>> self_iter = tags_.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).iterator(); Iterator<Map.Entry<String, MetricValue>> othr_iter = other.tags_.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).iterator(); while (cmp == 0 && self_iter.hasNext() && othr_iter.hasNext()) { Map.Entry<String, MetricValue> self_entry = self_iter.next(); Map.Entry<String, MetricValue> othr_entry = othr_iter.next(); cmp = self_entry.getKey().compareTo(othr_entry.getKey()); if (cmp == 0) cmp = self_entry.getValue().compareTo(othr_entry.getValue()); } if (cmp == 0) cmp = (self_iter.hasNext() ? 1 : (othr_iter.hasNext() ? -1 : 0)); return cmp; }
@Override public int compareTo(Tags other) { int cmp = 0; Iterator<Map.Entry<String, MetricValue>> self_iter = tags_.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).iterator(); Iterator<Map.Entry<String, MetricValue>> othr_iter = other.tags_.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).iterator(); while (cmp == 0 && self_iter.hasNext() && othr_iter.hasNext()) { Map.Entry<String, MetricValue> self_entry = self_iter.next(); Map.Entry<String, MetricValue> othr_entry = othr_iter.next(); cmp = self_entry.getKey().compareTo(othr_entry.getKey()); if (cmp == 0) cmp = self_entry.getValue().compareTo(othr_entry.getValue()); } if (cmp == 0) cmp = (self_iter.hasNext() ? 1 : (othr_iter.hasNext() ? -1 : 0)); return cmp; }