X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fwordcount%2Ftop10%2FRanking.java;fp=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fwordcount%2Ftop10%2FRanking.java;h=b748fe5071e53bae85b71bad5f2ee77a924c2c91;hb=4b94d31fbd663cb277276def106be9873ec4a246;hp=0000000000000000000000000000000000000000;hpb=02ab54c6b3c099f5b0bd420fc0a37034badf1c71;p=demos%2Fkafka%2Fwordcount diff --git a/src/main/java/de/juplo/kafka/wordcount/top10/Ranking.java b/src/main/java/de/juplo/kafka/wordcount/top10/Ranking.java new file mode 100644 index 0000000..b748fe5 --- /dev/null +++ b/src/main/java/de/juplo/kafka/wordcount/top10/Ranking.java @@ -0,0 +1,53 @@ +package de.juplo.kafka.wordcount.top10; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + + +@Getter +@Setter +public class Ranking +{ + private Entry[] entries = new Entry[0]; + + public void add(Entry newEntry) + { + if (entries.length == 0) + { + entries = new Entry[1]; + entries[0] = newEntry; + return; + } + + List list = new LinkedList<>(Arrays.asList(entries)); + for (int i = 0; i < list.size(); i++) + { + Entry entry; + + entry = list.get(i); + if (entry.getCount() <= newEntry.getCount()) + { + list.add(i, newEntry); + for (int j = i+1; j < list.size(); j++) + { + entry = list.get(j); + if(entry.getWord().equals(newEntry.getWord())) + { + list.remove(j); + break; + } + } + if (list.size() > 10) + { + list = list.subList(0,10); + } + entries = list.toArray(num -> new Entry[num]); + return; + } + } + } +}