package de.juplo.kafka.wordcount.top10;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.*;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
-@Getter
-@Setter
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+@NoArgsConstructor
+@Data
public class Ranking
{
private Entry[] entries = new Entry[0];
- public void add(Entry newEntry)
+ public Ranking add(Entry newEntry)
{
if (entries.length == 0)
{
entries = new Entry[1];
entries[0] = newEntry;
- return;
+ return this;
}
List<Entry> list = new LinkedList<>(Arrays.asList(entries));
Entry entry;
entry = list.get(i);
- if (entry.getCount() <= newEntry.getCount())
+ if (entry.getCounter() <= newEntry.getCounter())
{
list.add(i, newEntry);
for (int j = i+1; j < list.size(); j++)
list = list.subList(0,10);
}
entries = list.toArray(num -> new Entry[num]);
- return;
+ return this;
}
}
+
+ return this;
+ }
+
+ public static Ranking of(Entry... entries)
+ {
+ return new Ranking(entries);
}
}