A10

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

public class Spustac {

        /**
         * @param args
         */

        public static void main(String[] args) {
                String[] slova = { "Programovanie", "UPJS", "Java", "Algebra" };
                System.out.println(Arrays.toString(slova));
                Comparator<String> ppd = new PorovnavacPodlaDlzky();
                Arrays.sort(slova, ppd);
                System.out.println(((PorovnavacPodlaDlzky)ppd).getPocitadlo());
                System.out.println(Arrays.toString(slova));
        }

}
import java.util.Comparator;

public class PorovnavacPodlaDlzky implements Comparator<String> {

        private int pocitadlo = 0;

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

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

                if (o1.length() > o2.length()) {
                        return 1;
                }

                return o1.compareTo(o2);
        }

        public int getPocitadlo() {
                return pocitadlo;
        }

        public void reset() {
                pocitadlo = 0;
        }

}
package sk.upjs;
public class Bod {

        private double x;
        private double y;

        public double getX() {
                return x;
        }

        public void setX(double x) {
                this.x = x;
        }

        public double getY() {
                return y;
        }

        public void setY(double y) {
                this.y = y;
        }

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

        public Bod() {
                this(0, 0);
        }

        public String toString() {
                return "[" + x + ", " + y + "]";
        }

        public void nastav(double x, double y) {
                setX(x);
                setY(y);
        }

        public void nastav(Bod bod) {
                setX(bod.getX());
                setY(bod.getY());
                // this.x = bod.x;
        }

        public boolean rovnakeSuradnice(Bod bod) {
                return (bod.x == x) && (bod.y == y);
        }

        public double vzdialenostK(double x, double y) {
                return Math.sqrt((this.x - x) * (this.x - x) + (this.y - y)
                                * (this.y - y));
        }

        public double vzdialenostK(Bod bod) {
                return vzdialenostK(bod.x, bod.y);
        }

        public void posunO(double dx, double dy) {
                setX(getX() + dx);
                setY(getY() + dy);
        }

        public Bod posunutyBod(double dx, double dy) {
                return new Bod(getX() + dx, getY() + dy);
        }
}
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) {
                double vzdialenost1 = o1.vzdialenostK(x, y);
                double vzdialenost2 = o2.vzdialenostK(x, y);
                return Double.compare(vzdialenost1, vzdialenost2);
        }


}