From: Kai Moritz Date: Tue, 28 May 2024 19:03:11 +0000 (+0200) Subject: top10: 1.1.3 - (GREEN) Implemented `Ranking.equals()` accordingly X-Git-Tag: top10-1.1.3 X-Git-Url: https://juplo.de/gitweb/?a=commitdiff_plain;h=refs%2Ftags%2Ftop10-1.1.3;p=demos%2Fkafka%2Fwordcount top10: 1.1.3 - (GREEN) Implemented `Ranking.equals()` accordingly --- diff --git a/src/main/java/de/juplo/kafka/wordcount/top10/Ranking.java b/src/main/java/de/juplo/kafka/wordcount/top10/Ranking.java index 110ee68..4f56c18 100644 --- a/src/main/java/de/juplo/kafka/wordcount/top10/Ranking.java +++ b/src/main/java/de/juplo/kafka/wordcount/top10/Ranking.java @@ -105,6 +105,51 @@ public class Ranking return this; } + @Override + public boolean equals(Object o) + { + if (this == o) + return true; + if (o == null) + return false; + if (!(o instanceof Ranking)) + return false; + + Ranking other = (Ranking)o; + + if (other.entries.length != entries.length) + return false; + + if (entries.length == 0) + return true; + + int i = 0; + Set myWordsWithCurrentCount = new HashSet<>(); + Set otherWordsWithCurrentCount = new HashSet<>(); + Entry myEntry = entries[i]; + long currentCount = myEntry.getCounter(); + myWordsWithCurrentCount.add(myEntry.getWord()); + while (true) + { + Entry otherEntry = other.entries[i]; + if (otherEntry.getCounter() != currentCount) + return false; + otherWordsWithCurrentCount.add(otherEntry.getWord()); + if (++i >= entries.length) + return myWordsWithCurrentCount.equals(otherWordsWithCurrentCount); + myEntry = entries[i]; + if (myEntry.getCounter() != currentCount) + { + if (!myWordsWithCurrentCount.equals(otherWordsWithCurrentCount)) + return false; + currentCount = myEntry.getCounter(); + myWordsWithCurrentCount.clear(); + otherWordsWithCurrentCount.clear(); + } + myWordsWithCurrentCount.add(myEntry.getWord()); + } + } + public static Ranking of(Entry... entries) { Ranking ranking = new Ranking(entries);