private int compareTags()

in api/src/main/java/com/spotify/metrics/core/MetricId.java [384:431]


    private int compareTags(
        Set<Map.Entry<String, String>> left, Set<Map.Entry<String, String>> right
    ) {
        if (left == null && right == null) {
            return 0;
        }

        if (left == null) {
            return 1;
        }

        if (right == null) {
            return -1;
        }

        final Iterator<Map.Entry<String, String>> li = left.iterator();
        final Iterator<Map.Entry<String, String>> ri = right.iterator();

        while (li.hasNext()) {
            if (!ri.hasNext()) {
                return -1;
            }

            final Map.Entry<String, String> l = li.next();
            final Map.Entry<String, String> r = ri.next();

            final int k = l.getKey().compareTo(r.getKey());

            if (k != 0) {
                return k;
            }

            if (l.getValue() != null && r.getValue() != null) {

                final int v = l.getValue().compareTo(r.getValue());

                if (v != 0) {
                    return v;
                }
            }
        }

        if (ri.hasNext()) {
            return 1;
        }

        return 0;
    }