Introducción
El título de la publicación es realmente "holivny", pero en mi opinión, tanto Java como la popular biblioteca de Guava tienen una serie de problemas arquitectónicos que a la larga conducen a ambigüedades y desacuerdos en el equipo.

Java Collections Framework e inmutabilidad en la confianza
Collections Framework , . java.util.Collection add, clear, remove ... : Collections.emptyList(), Collections.singletonList<T>(T t), Arrays.asList<T>(T.. values) . . :
List<Integer> list = Arrays.asList(21, 22, 23);
list.add(24)
? java.util.List java.util.Collection, add. , Arrays.asList<T>(T... t) , add remove . : , . , - .
List<Integer> list = Arrays.asList(21, 22, 23);
list.set(0, 121);
System.out.println(list);
. . , . , , , . .
List<Integer> filtered = filter(List<Integer> list);
filter List<Integer> . ? , ? try {} catch(Exception e) {} add remove — . ? ? list, filtered? . , . , — . , , list.clear(), , . SOLID, L — , , . , add , .
- , Stream API. , Java , , , . , , .
, java.util.Collection, java.util.Iterable, Collection. Iterable , Iterator, for-each . .
public interface Iterator<E> {
boolean hasNext();
E next();
default void remove() {
throw new UnsupportedOperationException("remove");
}
default void forEachRemaining(Consumer<? super E> action) {
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
}
remove. , for-each, , , API , , . - , , , , Java , .
Guava
Guava? — ImmutableList.
ImmutableList<String> people = ImmutableList.of("Michael", "Simon", "John")
...
? «Immutable». , ImmutableList java.util.List, add, clear ... , . , final. : , List Collection. , ImmutableList, , , « ». Guava .
Kotlin
? , JetBrains Kotlin. , , , . :

, , , .
val list: List<Int> = listOf(1, 2, 3)
val mutableList: MutableList<Int> = list as MutableList<Int>
mutableList.clear()
- , MutableList List MutableList, , . , Java Collections Framework, Guava: , . , , . , Java, - , , , .
? ? , : , , , . . Java Collections Framework Immutable. :

, , «Immutable». , . , ImmutableQueue, , . . LinkedList , , ( , ). ImmutableLinkedList .
- , , . List ImmutableList. , toMutableList toImmutableList ImmutableList List . , , . , ArrayList ImmutableArrayList . . ArrayList , ImmutableArrayList, ImmutableArrayList ArrayList. API , .
, — java.util.Iterable. , for-each , . java.util.Iterator, , remove, . , .
ImmutableIterable, ImmutableIterator. , , Java for-each Iterable, ImmutableIterable.ImmutableIterator, java.util.Iterator remove, final, . , .remove Iterator, , Java, , .
, Java JP . , — , Java-. , , . !
P.S.
Actualmente estoy trabajando en una biblioteca de código abierto que proporciona colecciones Java totalmente inmutables. Los interesados pueden encontrar el enlace en Github .