X-Git-Url: http://git.nikiroo.be/?p=jvcard.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2FBaseClass.java;h=0aa18e6ff66336a3f2afecacc9ba6fbe1b4a380b;hp=ed9a693a355b01a7df8a222ee3296b13cea07d50;hb=4298276a4b717753397508ce5432071827d5b294;hpb=7da41ecd30228908bf2afcd07ff7943ab59d4c01 diff --git a/src/be/nikiroo/jvcard/BaseClass.java b/src/be/nikiroo/jvcard/BaseClass.java index ed9a693..0aa18e6 100644 --- a/src/be/nikiroo/jvcard/BaseClass.java +++ b/src/be/nikiroo/jvcard/BaseClass.java @@ -155,17 +155,20 @@ public abstract class BaseClass> implements List { Collections.sort(other, comparator); boolean equ = true; - while (mine.size() > 0 || other.size() > 0) { - E here = (mine.size() > 0) ? mine.remove(0) : null; - E there = (other.size() > 0) ? other.remove(0) : null; + E here = mine.size() > 0 ? mine.remove(0) : null; + E there = other.size() > 0 ? other.remove(0) : null; - if (here == null || comparator.compare(here, there) > 0) { + while (here != null || there != null) { + if (here == null + || (there != null && comparator.compare(here, there) > 0)) { if (added != null) added.add(there); + there = null; equ = false; } else if (there == null || comparator.compare(here, there) < 0) { if (removed != null) removed.add(here); + here = null; equ = false; } else { // they represent the same item @@ -176,7 +179,14 @@ public abstract class BaseClass> implements List { to.add(there); equ = false; } + here = null; + there = null; } + + if (here == null && mine.size() > 0) + here = mine.remove(0); + if (there == null && other.size() > 0) + there = other.remove(0); } return equ;