Middle
რატომ გამოიყენება სტრიმები ახალი ვერსიის Java-ში?
sobes.tech AI
პასუხი AI-სგან
Java-ның жаңа нұсқаларында (Java 8-ден бастап) стримдердің қолданылуы тиімділік, кодтың оқылуы және деректерді параллель өңдеу себептерімен байланысты бірнеше себептерге негізделген:
- Функционалды бағдарламалау: 스트림дер кодты дәлірек декларативті стильде жазуға мүмкіндік береді, мұнда не істеу керек екеніне назар аударылады, қалай емес. Бұл оқылуын және қолдауды жақсартады.
- Параллель өңдеу: 스트имдер коллекциялармен өңдеу операцияларын оңай параллелдеу үшін
parallelStream()пайдаланады. JVM деректерді бөлу және нәтижелерді біріктіруді басқарады, бұл көпжіпті бағдарламаларды дамытуға жеңілдетеді. - Тиімділік: Lazy evaluation (сабырлы бағалау) 스트имдерде операциялар тек қажет болғанда орындалады, бұл қосымша шығындарды азайтады. Intermediate-операциялар (map, filter) терминал-операцияны (collect, forEach) шақырмай тұрып орындалмайды.
- Коллекцияларды өңдеуді жақсарту: Стримдер стандартты, жоғары деңгейлі операциялар жиынтығын ұсынады, олар фильтрлеу, картаға салу, деректерді жинақтау үшін пайдаланылады, бұл циклдармен жазылған шаблонды код санын азайтады.
- Immutable Operations: Стримдер бастапқы коллекцияны өзгертпейді, олар құрылған коллекцияны қолдайды, иммутабельдік принциптерін сақтайды және қателерді табуды жеңілдетеді.
// Стримдерді фильтрлеу және картаға салу мысалы
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<String> filteredNames = names.stream() // Стрим құру
.filter(name -> name.startsWith("C")) // Фильтрлеу
.map(String::toUpperCase) // Картаға салу
.collect(Collectors.toList()); // Нәтижені жаңа тізімге жинау
System.out.println(filteredNames); // Шығу: [CHARLIE]
Параллель стримдер:
// Параллель өңдеу мысалы
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int sum = numbers.parallelStream() // Параллель стрим құру
.mapToInt(Integer::intValue) // IntStream-ке айналдыру
.sum(); // Жинақтау
System.out.println(sum); // Шығу: 55 (көпжолды жүйелерде тез есептелуі мүмкін)