예제 #1
0
  // interface comparable, necessario per treeset.
  @Override
  public int compareTo(PersonTree p) {
    // restituire valore negativo se this < p
    // = 0 se this equals p
    // valore positivo se this > p

    return this.name.compareTo(p.getName());
  }
예제 #2
0
  public static void main(String[] args) {

    {
      ArrayList al = new ArrayList();
      al.add("Ciao"); // String è un Object (inteso come tipo dato)

      Person p = new Person();
      p.setName("Pers");
      al.add(p);
      al.add("tutti");

      // String x = al.get(1); errore, get restituisce un Object
      try {
        String x = (String) al.get(1);
        System.out.println(x);
      } catch (ClassCastException e) {
        System.out.println("Sono un cattivone...");
      }
    }
    {
      ArrayList<String> als = new ArrayList<String>();
      als.add("Ciao");
      Person p = new Person();
      p.setName("Pers");
      // als.add(p); // una Persona non è una String(a)
      als.add("tutti");

      String x = als.get(1);
      System.out.println(x);

      ArrayList<Person> alp = new ArrayList<>();
      alp.add(p);

      // Covariance
      List<Person> lp = new LinkedList<>();
      //
      lp.add(p);
    }

    {
      // boxing
      int x = 5;
      Integer bx = x; // boxing: sempre "safe"

      bx = null;

      try {
        int xunboxing = bx; // unboxing: può lanciare exception
        System.out.println(xunboxing);
      } catch (NullPointerException e) {
        System.out.println(":(");
      }

      //
      Integer iy = 140;
      Integer iz = 140;

      if (iy == iz) {
        System.out.println(iy + " è uguale a " + iz);
      } else {
        System.out.println(iy + " è diverso a " + iz);
      }

      // con riferimenti, per verificare se due elementi
      // contengono lo stesso valore, si usa il metodo equals!

      if (iy.equals(iz)) {
        System.out.println(iy + " è uguale a " + iz);
      } else {
        System.out.println(iy + " è diverso a " + iz);
      }
    }

    {
      String s1 = "ciao";
      String s2 = "ci";
      s2 += "ao";

      // usare sempre equals
      if (s1 == s2) {
        System.out.println(s1 + " è uguale a " + s2);
      } else {
        System.out.println(s1 + " è diverso da " + s2);
      }
      if (s1.equals(s2)) {
        System.out.println(s1 + " è uguale a " + s2);
      } else {
        System.out.println(s1 + " è diverso da " + s2);
      }
    }
    {
      Person p1 = new Person();
      p1.setName("Pers");

      Person p2 = new Person();
      p2.setName("Pers");

      if (p1.equals(p2)) {
        System.out.println("uguali");
      } else {
        System.out.println("non uguali");
      }

      List<Person> lp = new ArrayList<>();
      lp.add(p1);
      lp.add(p2);

      Person p3 = new Person();
      p3.setName("Pers");

      if (lp.contains(p3)) {
        System.out.println("contiene");
      } else {
        System.out.println("non contiene");
      }

      for (Person p : lp) {
        System.out.println(p.getName());
      }
    }
    {
      List<Integer> ls = Arrays.asList(2, 3, 4, 5, 9, 12);

      Optional<Integer> oi =
          ls.stream().map(x -> x + 2).filter(x -> x % 2 == 0).reduce((a, x) -> a + x);
      int x = oi.orElse(0);
      System.out.println(x);
    }

    {
      {
        // Set
        Set<PersonHash> sp = new HashSet<>();

        PersonHash p1 = new PersonHash();
        p1.setName("Pers");
        sp.add(p1);

        PersonHash p2 = new PersonHash();
        p2.setName("Pers");
        sp.add(p2);

        PersonHash p3 = new PersonHash();
        p3.setName("Pers");

        if (sp.contains(p3)) {
          System.out.println("contiene");
        } else {
          System.out.println("non contiene");
        }

        for (PersonHash p : sp) {
          System.out.println(p.getName());
        }
      }

      {
        // Tree set
        Set<PersonTree> sp = new TreeSet<>();
        PersonTree p1 = new PersonTree();
        p1.setName("Pers");
        sp.add(p1);

        PersonTree p2 = new PersonTree();
        p2.setName("Pers");
        sp.add(p2);

        PersonTree p3 = new PersonTree();
        p3.setName("Pers");

        if (sp.contains(p3)) {
          System.out.println("contiene");
        } else {
          System.out.println("non contiene");
        }

        for (PersonTree p : sp) {
          System.out.println(p.getName());
        }

        // su tutte le collection è implementanta
        // la struttura dati: iterator

        Iterator<PersonTree> iter = sp.iterator();
        while (iter.hasNext()) {
          PersonTree pt = iter.next();
          // uso pt
        }
      }
    }
  }