/** * If called while triples not sorted nothing will happen! */ @Override public void removeDuplicates(ProgressListener listener) { if(arrayOfTriples.size()<=1 || !sorted) { return; } if(order==TripleComponentOrder.Unknown || !sorted) { throw new IllegalArgumentException("Cannot remove duplicates unless sorted"); } int j = 0; for(int i=1; i<arrayOfTriples.size(); i++) { if(arrayOfTriples.get(i).compareTo(arrayOfTriples.get(j))!=0) { j++; arrayOfTriples.set(j, arrayOfTriples.get(i)); } ListenerUtil.notifyCond(listener, "Removing duplicate triples", i, arrayOfTriples.size()); } while(arrayOfTriples.size()>j+1) { arrayOfTriples.remove(arrayOfTriples.size()-1); } arrayOfTriples.trimToSize(); numValidTriples = j+1; }