Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- public class GenericCounterTest {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt();
- GenericCounter<Integer> counterInt = new GenericCounter<Integer>();
- scanner.nextLine();
- for (int i = 0; i < n; ++i) {
- int x = scanner.nextInt();
- counterInt.count(x);
- }
- System.out.println("=====INTEGERS=====");
- System.out.println(counterInt);
- n = scanner.nextInt();
- scanner.nextLine();
- GenericCounter<String> counterString = new GenericCounter<String>();
- for (int i = 0; i < n; i++) {
- String s = scanner.nextLine();
- counterString.count(s);
- }
- System.out.println("=====STRINGS=====");
- System.out.println(counterString);
- n = scanner.nextInt();
- scanner.nextLine();
- GenericCounter<Float> counterFloat = new GenericCounter<Float>();
- for (int i = 0; i < n; i++) {
- float f = scanner.nextFloat();
- counterFloat.count(f);
- }
- System.out.println("=====FLOATS=====");
- System.out.println(counterFloat);
- scanner.close();
- }
- }
- class CountableElement<T> {
- private T element;
- private int count;
- private StringBuffer sb;
- public CountableElement(T element, int count) {
- this.element = element;
- this.count = count;
- this.sb = new StringBuffer("*");
- }
- public void increment(){
- this.count++;
- sb.append("*");
- }
- public String countAsStars(){
- return sb.toString();
- }
- public T getElement() {
- return element;
- }
- public void setElement(T element) {
- this.element = element;
- }
- }
- interface Counter<T> {
- void count(T element);
- }
- class GenericCounter<T> implements Counter<T> {
- List<CountableElement<T>> elements;
- public GenericCounter() {
- this.elements = new ArrayList<>();
- }
- @Override
- public void count(T element) {
- for (CountableElement countableElement : elements){
- if (countableElement.getElement().equals(element)){
- countableElement.increment();
- return;
- }
- }
- elements.add(new CountableElement<>(element, 1));
- }
- @Override
- public String toString() {
- StringBuffer sb = new StringBuffer();
- for (CountableElement countableElement : elements){
- sb.append(String.format("%s|%s\n", countableElement.getElement().toString(), countableElement.countAsStars()));
- }
- return sb.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment