From 896874bd18d756c29309a703b742132fc0cdb520 Mon Sep 17 00:00:00 2001 From: osyol Date: Sat, 25 Oct 2025 00:33:26 +0500 Subject: [PATCH 1/2] Add files via upload --- .../production/stream api/Main$1Product.class | Bin 0 -> 1699 bytes .../out/production/stream api/Main.class | Bin 0 -> 8903 bytes stream api/src/Main.java | 136 ++++++++++++++++++ stream api/stream api.iml | 11 ++ 4 files changed, 147 insertions(+) create mode 100644 stream api/out/production/stream api/Main$1Product.class create mode 100644 stream api/out/production/stream api/Main.class create mode 100644 stream api/src/Main.java create mode 100644 stream api/stream api.iml diff --git a/stream api/out/production/stream api/Main$1Product.class b/stream api/out/production/stream api/Main$1Product.class new file mode 100644 index 0000000000000000000000000000000000000000..636874f4e958896596c37dd9e81a09bfe87967c2 GIT binary patch literal 1699 zcma)6+fvg|6kP|}reJDIt#}77sBJ+i-nDq8DkvhO4iD-}NY6mD|fpMn<6U&iZK8T9&(3dm(M* zH3c%Wj_U+>1P05Ml_6v?WMJ6DK9~ZzXO`nm%q)AV*|7tGlxuBBf#Twho0oy-xNCI{ z+;1YUQCZsx`h8{6- z6vqf%xBT@v)ztCyKo_*-2@_)&XNK}a$7=Zk6Mx$!7@n`blXg(AycQ^z6Z$y6UQMI2 z!h%ErR=ZRJ-;%X)+>h$LtVM?N zmfLJee_~Oo_nmgVH1Mrg$1sLJ);XKVX`3$878r3aA@RiqIzR0%`^NsKqQSJjj41E4C z_!ufNe3oQ7*lcxj3&;P3AB}9b)6KE~lVRNZw)3ck?<{NeJB+=uNXKrtmwmyx{{t5> z73WZ6bh?6?x$tF=0(6-(xDZ-RqehwHyj;T7P;(L2C`;^GG&kL;(KB literal 0 HcmV?d00001 diff --git a/stream api/out/production/stream api/Main.class b/stream api/out/production/stream api/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..b23a3650a3a025b651b84774adcb50a80f2ebda0 GIT binary patch literal 8903 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 numbers = List.of(1, 2, 3, 4, 5, 6); + System.out.println("\nКвадрат чётных цифр из 1-6"); + +// to double the values +// Stream doubledValues = numbers.stream().map(n -> n*2); + +// doubledValues.forEach(n -> System.out.println(n)); + +// to leave only odd ones and get their square values + numbers.stream() + .filter(n -> n%2 == 1) + .sorted() + .map(n -> n*n) + .forEach(n -> System.out.println(n)); + +// the number of words with length more than 5 + List words = List.of("apple", "banana", "pear", "pineapple"); + System.out.println("\nКоличество слов длиною больше 5"); + + + System.out.println(words.stream() + .filter(s -> s.length() > 5) +// .sorted() + .count()); +// .forEach(s -> System.out.println(s)); + +// max and min + List nums = List.of(10, 2, 33, 4, 25); + System.out.println("\nЛист из 10, 2, 33, 4, 25"); + nums.stream() + .min(Comparator.comparing(Integer::valueOf)) + .ifPresent(min -> System.out.println("Самое маленькое число:" + min)); + + nums.stream() + .max(Comparator.comparing(Integer::valueOf)) + .ifPresent(max -> System.out.println("Самый большой:" + max)); + +// средняя длина строк + List names = List.of("Alice", "Bob", "Charlie", "David"); + System.out.print("\nСредняя длина из 'Alice', 'Bob', 'Charlie' и 'David': "); + + double averageLength = names.stream() + .mapToInt(String::length) + .average() + .orElse(0); + + System.out.print(averageLength); + +// удаление дубликатов и отсортировка строки по длине + List fruits = List.of("apple", "pear", "apple", "banana", "kiwi"); + System.out.print("\nБыло \n" + + "'apple', 'pear', 'apple', 'banana', 'kiwi' \n" + + "Стало: "); + + List noduplicate = fruits.stream() + .distinct() + .sorted(Comparator.comparingInt(String::length)) + .collect(Collectors.toList()); + + System.out.print(noduplicate); + +// преобразование список в map + System.out.println("\nПреобразование List в Map "); + List fruits2 = List.of("apple", "banana", "kiwi"); + + Map fruits2Mapped = fruits2.stream() + .collect(Collectors.toMap( + fruit -> fruit, String::length + )); + + System.out.println( fruits2Mapped); + +// Map map = fruits2.stream().collect(Collectors.toMap(Item::getKey, item -> item)); +// +// map.forEach(k, v) ->System.out.println(k + " => " + v); + +// группировка имён по первой букве + List names2 = List.of("Alice", "Charlie", "Andrew", "Catherine", "Bob"); + System.out.println("Группировка \"Alice\", \"Charlie\", \"Andrew\", \"Catherine\", \"Bob\" по первой букве: "); + +String names2sorted = names2.stream() + .sorted() + .collect(Collectors.joining(", ")); + System.out.println(names2sorted); + +// собрать список имён в одну строку через запятую + List names3 = List.of("Tom", "Jerry", "Spike"); + + String oneLine = names3.stream() + .collect(Collectors.joining(", ")); + + System.out.println(oneLine); + +// Из списка предложений получить список всех слов. + List names4 = List.of("Java is cool", "Streams are powerful"); + + List names4Words = names4.stream() + .flatMap(sentence -> Arrays.stream(sentence.split(" "))) + .collect(Collectors.toList()); + System.out.println(names4Words); + +// Найди самый дорогой продукт в каждой категории. + record Product(String name, String category, double price){} + List products = List.of( + new Product("Phone", "Electronics", 1200), + new Product("TV", "Electronics", 1800), + new Product("Apple", "Fruits", 2.5), + new Product("Mango", "Fruits", 4.0)); + + Map mostExpensiveByCategory = products.stream() + .collect(Collectors.groupingBy( + Product::category, + Collectors.collectingAndThen( + Collectors.maxBy(Comparator.comparing(Product::price)), + Optional::get + ) + )); + + mostExpensiveByCategory.forEach((category, product) -> + System.out.println("Категория: " + category + + ", самый дорогой: " + product.name() + + " " + product.price())); + + } +} \ No newline at end of file diff --git a/stream api/stream api.iml b/stream api/stream api.iml new file mode 100644 index 0000000..9465dd8 --- /dev/null +++ b/stream api/stream api.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file From 093d5c51ed4b3997593438fd399c9d9867e6b42f Mon Sep 17 00:00:00 2001 From: osyol Date: Sun, 26 Oct 2025 00:29:54 +0500 Subject: [PATCH 2/2] functional interface 1-10 --- functional interface/functional interface.iml | 11 +++ .../functional interface/Main.class | Bin 0 -> 7061 bytes functional interface/src/Main.java | 92 ++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 functional interface/functional interface.iml create mode 100644 functional interface/out/production/functional interface/Main.class create mode 100644 functional interface/src/Main.java diff --git a/functional interface/functional interface.iml b/functional interface/functional interface.iml new file mode 100644 index 0000000..9465dd8 --- /dev/null +++ b/functional interface/functional interface.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/functional interface/out/production/functional interface/Main.class b/functional interface/out/production/functional interface/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..60bd177d9879a6b66da7dfd333789cde27dd1ef6 GIT binary patch literal 7061 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 literal 0 HcmV?d00001 diff --git a/functional interface/src/Main.java b/functional interface/src/Main.java new file mode 100644 index 0000000..b079615 --- /dev/null +++ b/functional interface/src/Main.java @@ -0,0 +1,92 @@ +//задания 1-10 + +import java.util.List; +import java.util.UUID; +import java.util.function.*; + +public class Main { + public static void main(String[] args) { +// Создай Predicate, который проверяет, что строка не пуста и длиннее 3 символов + Predicate threeORmore = s -> s != null && !s.isEmpty() && s.length() > 3; + + System.out.println(threeORmore.test("hi")); + System.out.println(threeORmore.test("")); + System.out.println(threeORmore.test("germany")); + System.out.println(threeORmore.test(null)); + +// Создай Function, возвращающую длину строки. + Function getLength = s -> s.length(); + + System.out.println(); + System.out.println("Germany is the country in my mind rigth now"); + System.out.println(getLength.apply("Germany is the country in my mind rigth now")); + +// Создай Supplier, который возвращает новый UUID при каждом вызове. + Supplier newUUID = () -> UUID.randomUUID(); + System.out.println("Тройка новых UUID"); + System.out.println(newUUID.get()); + System.out.println(newUUID.get()); + System.out.println(newUUID.get()); + +// Создай Consumer, который выводит строку в upper case. + Consumer toUpperTheString = s -> System.out.println(s.toUpperCase()); + + System.out.println("Строка для ввода"); + System.out.println("Some random sentence"); + toUpperTheString.accept("Some random sentence"); + +// Создай BiFunction, которая возвращает сумму двух чисел. + BiFunction sumoftwo = (a, b) -> a + b; + + System.out.println(sumoftwo.apply(6, 9)); + +// Function trim и Function toUpperCase. Объедини их в одну, которая сначала обрезает пробелы, потом делает верхний регистр + Function trim = s -> s.replaceAll(" ", ""); + Function toUppperCase = s -> s.toUpperCase(); + + Function trimandUpper = trim.andThen(toUppperCase); + + System.out.println(trimandUpper.apply("let you cut me open")); + +// Один Consumer печатает строку в консоль, второй — печатает длину строки. Объедини их через andThen(). +// печатание строки + Consumer printString = s -> System.out.println("Строка " + s); + +// печанание её длины + Consumer printLength = s -> System.out.println("Длина " + s.length()); + +// 2 в 1 + Consumer combination = printString.andThen(printLength); + + combination.accept("Osama bin Russel"); + +// Создай Predicate isEven и isPositive. Получи Predicate, который проверяет "нечётное или отрицательное". + Predicate isEven = n -> n % 2 == 0; + Predicate isPositive = n -> n > 0; + + Predicate oddORnegative = isEven.negate().or(isPositive.negate()); + + System.out.println(oddORnegative.test(15)); + System.out.println(oddORnegative.test(-69)); + System.out.println(oddORnegative.test(28)); + System.out.println(oddORnegative.test(0)); + +// BiFunction multiply = (a, b) -> a * b; Function toStr = x -> "Result: " + x; Используй andThen(), чтобы объединить в одну цепочку. + BiFunction multiply = (a, b) -> a * b; + Function toStr = x -> "Result " + x; + + BiFunction result = multiply.andThen(toStr); + + System.out.println(result.apply(6, 9)); + +// Создай UnaryOperator, который добавляет "!!!" к строке. + UnaryOperator addiction = s -> s.concat("!!!"); + System.out.println(addiction.apply("This is a warning like it or not")); + + + + + + + } +} \ No newline at end of file