title: JAVA : How to remove duplicates from list using stream
body: <p>I want to remove duplicates from a list based on a property(mail) of the items in the list.<br>
  I did this :   </p>
  
  <pre><code>acteurs = acteurs.stream().distinct().collect(Collectors.toList());
  </code></pre>
  
  <p>The equals method of Acteur</p>
  
  <pre><code>@Override
  public boolean equals(Object o) {
      if (this.getMail().equals(((Acteur)o).getMail())) {
          return true;
      }
      if (this == o) {
          return true;
      }
      if (o == null || getClass() != o.getClass()) {
          return false;
      }
      Acteur acteur = (Acteur) o;
      if(acteur.id == null || id == null) {
          return false;
      }
      return Objects.equals(id, acteur.id);
  }
  </code></pre>
  
  <p>The equals method should be called during the instruction </p>
  
  <pre><code>acteurs = acteurs.stream().distinct().collect(Collectors.toList());
  </code></pre>
  
  <p>But it isn't.<br>
  Where am I wrong?</p>
  
  <p>UPDATE :<br>
  My solution :   </p>
  
  <pre><code>List&lt;Acteur&gt; dto3s =acteurs.stream()
              .collect(Collectors.collectingAndThen(
                  Collectors.toCollection(() -&gt; new TreeSet&lt;&gt;(Comparator.comparing(Acteur:: getMail))),
                  ArrayList::new));
  </code></pre>