B10

package sk.upjs.paz;
import java.util.Comparator;


public class PorovnavacPodlaDlzky implements Comparator<String> {

        private int pocitadlo;

        public PorovnavacPodlaDlzky() {
                pocitadlo = 0;
        }

        public void resetujPocitadlo() {
                pocitadlo = 0;
        }

        public int getPocetPorovnani() {
                return pocitadlo;
        }

        @Override
        public int compare(String o1, String o2) {
                pocitadlo++;
                System.out.println("Porovnavam " + o1 + " a " + o2);

                if (o1.length() == o2.length())
                        return 0;

                if (o1.length() < o2.length())
                        return -1;
                else
                        return 1;
        }

}
import java.util.Arrays;
import java.util.Comparator;

import sk.upjs.paz.PorovnavacPodlaDlzky;


public class Spustac {

        /**
         * @param args
         */

        public static void main(String[] args) {
                String[] retazce = {"Ahoj", "svet", "A", "FX", "PAZko"};
                System.out.println(Arrays.toString(retazce));

                Comparator<String> p = new PorovnavacPodlaDlzky();
                Arrays.sort(retazce, p);
                System.out.println(((PorovnavacPodlaDlzky)p).getPocetPorovnani());

                System.out.println(Arrays.toString(retazce));
        }

}
package sk.upjs;

import java.util.Comparator;

public class BodovyPorovnavac implements Comparator<Bod> {

        private double x;
        private double y;

        public BodovyPorovnavac(double x, double y) {
                this.x = x;
                this.y = y;
        }

        @Override
        public int compare(Bod o1, Bod o2) {
                return Double.compare(o1.vzdialenostK(x, y), o2.vzdialenostK(x, y));
        }

}

package sk.upjs.test;

import java.awt.Color;
import java.awt.geom.Point2D;

public class FarebnyBod extends Point2D {

        private double x;
        private double y;
        private Color farba;

        public FarebnyBod(double x, double y, Color farba) {
                this.x = x;
                this.y = y;
                this.farba = farba;
        }

        public FarebnyBod(double x, double y) {
                this(x, y, null);
                int a = (int) (Math.random() * 3);
                if (a == 1) {
                        this.farba = Color.BLUE;
                }
                if (a == 2) {
                        this.farba = Color.GREEN;
                }
                if (a == 0) {
                        this.farba = Color.RED;
                }
        }

        @Override
        public int hashCode() {
                final int prime = 31;
                int result = super.hashCode();
                result = prime * result + ((farba == null) ? 0 : farba.hashCode());
                long temp;
                temp = java.lang.Double.doubleToLongBits(x);
                result = prime * result + (int) (temp ^ (temp >>> 32));
                temp = java.lang.Double.doubleToLongBits(y);
                result = prime * result + (int) (temp ^ (temp >>> 32));
                return result;
        }

        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (!super.equals(obj))
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                FarebnyBod other = (FarebnyBod) obj;
                if (farba == null) {
                        if (other.farba != null)
                                return false;
                } else if (!farba.equals(other.farba))
                        return false;
                if (java.lang.Double.doubleToLongBits(x) != java.lang.Double
                                .doubleToLongBits(other.x))
                        return false;
                if (java.lang.Double.doubleToLongBits(y) != java.lang.Double
                                .doubleToLongBits(other.y))
                        return false;
                return true;
        }

        @Override
        public double getX() {
                return x;
        }

        @Override
        public double getY() {
                return y;
        }

        @Override
        public void setLocation(double x, double y) {
                this.x = x;
                this.y = y;
        }

}
package sk.upjs.test;

public class ZoznamBodov {

        private FarebnyBod[] pole;
        private int pocet;

        ZoznamBodov(){
                pole = new FarebnyBod[0];
                pocet = 0;
        }

        ZoznamBodov(double minX, double minY, double maxX, double maxY, int pocet){
                this();
                for (int i = 0; i < pocet; i++) {
                        pridaj(new FarebnyBod(Math.random()*(maxX-minX), Math.random()*(maxY-minY)));
                }
        }

        public void pridaj(FarebnyBod fb){
                if(pole.length == pocet){
                        FarebnyBod[] novePole = new FarebnyBod[pole.length+20];
                        System.arraycopy(pole, 0, novePole, 0, pole.length);
                        novePole[pole.length]= fb;
                        pole = novePole;
                        pocet++;
                } else{
                        pole[pocet]= fb;
                        pocet++;
                }
        }

}