From 915853d141945340e10bccb61433be3b0984d812 Mon Sep 17 00:00:00 2001 From: Guillaume Grossetie Date: Fri, 19 Mar 2021 22:24:05 +0100 Subject: [PATCH] resolves #66 use more efficient Set implementation to speed up TextGrid#seedFillOld --- .gitignore | 1 + .../ascii2image/text/CellSet.java | 21 ++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 65bb389..932f8d4 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ releases/ tests/images/ tests/images-expected/ target/ +classes/ diff --git a/src/java/org/stathissideris/ascii2image/text/CellSet.java b/src/java/org/stathissideris/ascii2image/text/CellSet.java index 0a40b8c..580bd43 100644 --- a/src/java/org/stathissideris/ascii2image/text/CellSet.java +++ b/src/java/org/stathissideris/ascii2image/text/CellSet.java @@ -20,11 +20,10 @@ package org.stathissideris.ascii2image.text; import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Hashtable; +import java.util.Comparator; import java.util.Iterator; import java.util.Set; +import java.util.TreeSet; /** * @@ -41,8 +40,20 @@ public class CellSet implements Iterable { public static final int TYPE_HAS_CLOSED_AREA = 3; public static final int TYPE_UNDETERMINED = 4; - Set internalSet = new HashSet(); - + private static final Comparator CELL_COMPARATOR = new Comparator() { + @Override + public int compare(TextGrid.Cell o1, TextGrid.Cell o2) { + int yResult = Integer.compare(o1.y, o2.y); + if (yResult == 0) { + return Integer.compare(o1.x, o2.x); + } else { + return yResult; + } + } + }; + + Set internalSet = new TreeSet<>(CELL_COMPARATOR); + private int type = TYPE_UNDETERMINED; private boolean typeIsValid = false;