- package pl.edu.uwm.wmii.dobrenkocezary.labolatorium10;
- import java.time.LocalDate;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
- public class test {
- public static void main(String[] args) {
- Osoba<String> obj1 = new Osoba<String>("Bonzo",1997,11,12);
- Osoba<String> obj2 = new Osoba<String>("Kobra",1995,01,22);
- System.out.println(obj1.toString());
- System.out.println(obj2.toString());
- System.out.println(obj1.equals(obj1));
- System.out.println(obj1.equals(obj2));
- System.out.println(obj1.compareTo(obj1));
- System.out.println(obj1.compareTo(obj2));
- List<Osoba> lista = new ArrayList<Osoba>();
- Osoba<String> l1 = new Osoba<String>("AAA",1998,11,12);
- Osoba<String> l2 = new Osoba<String>("AAA",1997,11,12);
- Osoba<String> l3 = new Osoba<String>("CCC",1992,11,12);
- Osoba<String> l4 = new Osoba<String>("DDD",1992,11,12);
- Osoba<String> l5 = new Osoba<String>("Dobrenko",1997,9,9);
- lista.add(l1);
- lista.add(l2);
- lista.add(l3);
- lista.add(l4);
- lista.add(l5);
- for(Osoba o : lista) {
- System.out.println(o.toString());
- }
- System.out.println("-------------------------------");
- Collections.sort(lista);
- }
- }
- class Osoba<T extends Comparable<T>> implements Comparable<T>, Cloneable {
- public Osoba(String Nazwisko, int Rok, int Miesiac, int Dzien){
- this.Nazwisko = Nazwisko;
- this.DataUrodzenia = LocalDate.of(Rok, Miesiac, Dzien);
- }
- @Override
- public int compareTo(T Osoba){
- return Osoba.compareTo(Osoba);
- }
- public int compareTo(Osoba other)
- {
- int cmp = 0;
- if (other.Nazwisko != this.Nazwisko){
- cmp++;
- }
- if (other.DataUrodzenia.compareTo(this.DataUrodzenia) != 0){
- cmp++;
- }
- return cmp;
- }
- public boolean equals(Object obj) {
- if (this == obj) return true;
- if (obj == null) return false;
- if (getClass() != obj.getClass()) return false;
- Osoba other = (Osoba) obj;
- if (Nazwisko == null) { if (other.Nazwisko != null) return false; }
- else if (!Nazwisko.equals(other.Nazwisko)) return false;
- if (DataUrodzenia != other.DataUrodzenia) return false;
- return true;
- }
- public String toString() { return this.getClass().getSimpleName() + "[" + this.Nazwisko + " , " + this.DataUrodzenia + "]"; }
- private T t;
- private LocalDate DataUrodzenia;
- private String Nazwisko;
- }