рдкрд░рд┐рдЪрдп
рдкреЛрд╕реНрдЯ рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд╕рдордЧреНрд░" рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЬрд╛рд╡рд╛ рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдЕрдорд░реВрдж рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреЛрдиреЛрдВ рдореЗрдВ рдХрдИ рд╡рд╛рд╕реНрддреБ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЯреАрдо рдореЗрдВ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдФрд░ рдЕрд╕рд╣рдорддрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИрдВред

рдЬрд╛рд╡рд╛ рдХрд▓реЗрдХреНрд╢рдВрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рдЯреНрд░рд╕реНрдЯ рдкрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╕рдВрдЧреНрд░рд╣ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХрдВрдЯреЗрдирд░ рд╡рд╣рд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ 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.
рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЬрд╛рд╡рд╛ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЗрдЪреНрдЫреБрдХ рд▓реЛрдЧ Github рдкрд░ рд▓рд┐рдВрдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред