Java Single LinkedList
Indeed the cases for delete can be reduced.

  public void delete(Node node) {
    Node prior = null;
    Node current = head;
    while (current != node &amp;&amp; current != null) {
      prior = current;
      current = current.next;
    }
    if (current != null) {
      if (prior == null) {
        head = current.next;
      } else {
        prior.next = current.next;
      }
      --size;
      if (current == tail) {
        tail = prior;
      }
    }
  }


In general one would keep Node an internal non-public class, for instance one would not
like people to play with the next field. Hence I would propose:

  public void delete(int value) {
    Node prior = null;
    Node current = head;
    while (current != null &amp;&amp; current.value != value) {
      prior = current;
      current = current.next;
    }
    if (current != null) {
      if (prior == null) {
        head = current.next;
      } else {
        prior.next = current.next;
      }
      --size;
      if (current == tail) {
        tail = prior;
      }
    }
  }


For the rest:


A tab of 4 spaces is still my favorite, probably still mainstream.
iterator is an unlucky naming, as there exist an Iterator in java, with a collection method iterator(). I used current.


And (as goodie) what about System.out.println(list);:

@Override
public String toString() {
    StringBuilder sb = new StringBuilder("[");
    Node current = head;
    while (current != null) {
      if (sb.length() &gt;= 1) {
          sb.append(", ");
      }
      sb.append(current.value);
      current = current.next;
    }
    sb.append("]");
    return sb.toString();
}