public Diff()

in ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/Diff.java [44:100]


    public Diff(Collection<T> c1, Collection<T> c2) {
        if (c1.isEmpty()) {
            added.addAll(c2);

            return;
        }

        if (c2.isEmpty()) {
            rmvd.addAll(c1);

            return;
        }

        Iterator<T> oldIter = c1.iterator();
        Iterator<T> newIter = c2.iterator();

        int cmp = 0;

        T e1 = null;
        T e2 = null;

        while (oldIter.hasNext() || newIter.hasNext()) {
            if (oldIter.hasNext() && cmp <= 0)
                e1 = oldIter.next();

            if (newIter.hasNext() && cmp >= 0)
                e2 = newIter.next();

            assert e1 != null;
            assert e2 != null;

            cmp = e1.compareTo(e2);

            if (cmp < 0)
                rmvd.add(e1);
            else if (cmp > 0)
                added.add(e2);
            else
                same.add(e1);

            if (!oldIter.hasNext()) {
                if (cmp < 0)
                    added.add(e2);

                while (newIter.hasNext())
                    added.add(newIter.next());
            }

            if (!newIter.hasNext()) {
                if (cmp > 0)
                    rmvd.add(e1);

                while (oldIter.hasNext())
                    rmvd.add(oldIter.next());
            }
        }
    }