diff --git a/Java/Java.md b/Java/Java.md index e6f4896..5c9ce8a 100644 --- a/Java/Java.md +++ b/Java/Java.md @@ -894,7 +894,7 @@ class PersonAgeComparator implements Comparator { } class Main { - public static void Main(String[] args) { + public static void main(String[] args) { Comparator pcomp = (new PersonNameComparator()).thenComparing(new PersonAgeComparator()); TreeSet people = new TreeSet(pcomp); people.add(new Person("Tom", 10)); @@ -915,7 +915,7 @@ class Main { ```Java public class Main { - public static void Main(String[] args) { + public static void main(String[] args) { Operation op = (x, y) -> x + y; Operation op2 = (int x, int y) -> x - y; @@ -944,10 +944,111 @@ interface Printer { } class Main { - public static void Main(String[] args) { + public static void main(String[] args) { Printer p = (s) -> System.out.println(s); } } ``` Переменные, которые используются в лямбде нельзя менять + +### Блоки кода в лямбда-функциях + +```Java +public class Main { + public static void main(String[] args) { + Operation op = (int x, int y) -> { + if(x < 0) { + x = -x; + } + return x + y; + }; + } +} + +interface Operation { + int calculate(int x, int y); +} +``` + +### Обобщённые лямбды + +```Java +public class Main { + public static void main(String[] args) { + Operation op = (x, y) -> { + if(x < 0) { + x = -x; + } + return x + y; + }; + } +} + +interface Operation { + T calculate(T x, T y); +} +``` + +## Ссылки на метод, как параметр методов + +```Java +interface Operation { + int calculate(int x, int y); +} + +class Operations { + static int Add(int x, int y) { + return x + y; + } +} + +class Main { + public static void main(String[] args) { + Operation op = Operations::Add; + } +} +``` + +Также можно ссылаться на методы объекта, через *переменная::метод*, и на конструктор, через *класс::new*. Лямбды также можно возврощать + +## Встроенные функцианальные интерфейсы + +* *Predicate\* - *boolean test(T t)* +* *BinaryOperator\* - *T apply(T t1, T t2)* +* *UnaryOperator\* - *T apply(T t)* +* *Function\* - *R apply(T t)* +* *Consumer\* - *void accept(T t)* +* *Supplier\* - *T get()* + +## *Java.Util* + +### Класс *Locale* + +> Локали - боль... страдания... *C++* + +*Locale.getDefault()* чтобы получить текущую + +### *Date* + +> *Date* - штука для работы с датами. Можно использовать для форматирования с помощью *Locale* + +### *Calendar* & *GregorianCalendar* + +> *Calendar* - абстрактный класс, а *GregorianCalendar* - имплементация. Он также держит часы, минуты, секунды. Класс *DateFormat* для красивого вывода + +### *TimeZone* & *SimpleTimeZone* + +> *Calendar* - абстрактный класс, а *GregorianCalendar* - имплементация. Он также держит часы, минуты, секунды. Нужны для работы с часовыми поясами + +### *UUID* + +> *UUID* - класс для работы с UUID + +```Java +UUID id = UUID.randomUUID(); +``` + +### *StringTokenizer* + +> *StringTokenizer* нужен для разделения строк на токены, используя данный разделитель (по умолчанию пробел)