Sobes.tech
Junior — Middle

Тафовут байни усули toList() ва collect(Collectors.toList()) дар API Stream дар Java чист?

sobes.tech AI

Ҷавоб аз AI

Дар Java API Stream, усул collect(Collectors.toList()) усул стандартӣ барои ҷамъоварии унсурҳои ҷараён ба рӯйхат (List) мебошад. Он рӯйхати навро, ки ҳамаи унсурҳои ҷараёнро дар бар мегирад, бармегардонад.

Моддаи toList() дар Java 16 ворид шуд, ҳамчун роҳи кӯтоҳтар ва қулайтар барои ҷамъоварии унсурҳо ба рӯйхат. Вай ҳам рӯйхатро бармегардонад, аммо бо баъзе фарқиятҳо:

  • Collectors.toList() кафолат намедиҳад, ки рӯйхат чӣ гуна амалӣ карда мешавад ва метавонад, масалан, ArrayList баргардонад.
  • Stream.toList() рӯйхати беғараз (immutable) бармегардонад, ки тағир доданаш мумкин нест (масалан, илова кардан ё хориҷ кардани унсурҳо).

Масалан:

List<String> list1 = stream.collect(Collectors.toList()); // рӯйхати тағирёбанда
List<String> list2 = stream.toList(); // рӯйхати беғараз

list1.add("нав" ); // кор мекунад
list2.add("нав"); // ноком мешавад UnsupportedOperationException

Фарқияти асосӣ дар он аст, ки рӯйхати баргардондашаванда чӣ гуна тағирёбанда аст ва истифодаи он чӣ қадар қулай аст.