Добавил:
ПОИТ 2016-2020 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Пацей 4 сем / Лекции / СТПI_2_ООП

.pdf
Скачиваний:
70
Добавлен:
29.04.2018
Размер:
15.18 Mб
Скачать

Optional<Integer> a = Optional.ofNullable(value1);

Optional<Integer> b = Optional.of(value2);

Log.v("test",String.valueOf(a.isPresent())); //false Log.v("test",String.valueOf(b.isPresent())); //true

содержит не null значение

Integer value3 = a.orElse(new Integer(0));

Log.v("test", value3.toString());//0

механизм результата,

Integer value4 = b.get();

если Optional содержит null

 

Log.v("test", String.valueOf(value3 + value4));//10

http://docs.oracle.com/javase/8/docs/api/java/util/Optional.html

a.orElseGet( () -> 100 )

принимает функции для генерации значения по умолчанию

SDK 24 и выше

Stream API

представляет последовательность элементов и поддерживает различные виды последовательных и параллельных агрегатных операций для выполнения вычислений

C SDK

List<String> list =

Arrays.asList("a1", "a2", "a3", "b1", "c2", "c1");

list.stream()

.filter(s -> s.startsWith("a")) .sorted()

.forEach(s -> Log.v("Info", s));

Обрабатывает данные декларативно Более управляемый синтаксис - через цепочки операций Поддержка параллелизма

final Collection< Task > tasks = Arrays.asList( new Task( Status.OPEN, 5 ),

new Task( Status.OPEN, 13 ), new Task( Status.CLOSED, 8 )

);

// Подсчет общего количества очков всех активных задач с использованием s final long totalPointsOfOpenTasks = tasks

.stream()

.filter( task -> task.getStatus() == Status.OPEN )

.mapToInt( Task::getPoints )

.sum();

Optional<FileInputStream> fis =

names.stream().filter(name -> !isProcessedYet(name)) .findFirst()

.map(name -> new FileInputStream(name));

parallelStream()

Возвращает || поток

Промежуточные операции intermediate (возвращают новый поток) /ленивые – filter, sorted, мap

Конечные операции terminal (проходят

через поток) / поток использован – forEach, match, count

Java9

Stream.of(1,2,3,4,5,6,7,8,9,10)

.takeWhile(i -> i < 5 )

.forEach(System.out::println);

Date/Time API

java.time

Local - упрощенный API с датой и временем без сложностей обработки

часовых поясов.

Zoned- специализированный API с датой и временем для обработки различных часовых поясов.

LocalDateTime currentTime = LocalDateTime.now();

Log.i("Current DateTime " , currentTime.toString());

LocalDate date1 = currentTime.toLocalDate();

Log.i("date1: " , date1.toString());

Month month = currentTime.getMonth(); int day = currentTime.getDayOfMonth(); int seconds = currentTime.getSecond();

LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2019); Log.i("date2: " ,date2.toString());

LocalDate date3 = LocalDate.of(2018, Month.DECEMBER, 12); Log.i("date3: ", date3.toString());

LocalTime date4 = LocalTime.of(22, 15);

Log.i("date4: " , date4.toString());

LocalTime date5 = LocalTime.parse("20:15:30");

Log.i("date5: " , date5.toString());

Модульный код

Java 9

Монолитный код jar => модульный Каждый модуль имеет

Имя

Код

Ресурсы

module by.bstu { }

Process API

ProcessHandle current = ProcessHandle.current(); current.info().command();

Java 9

java.lang.ProcessHandle

java.lang.ProcessHandle.Info

ReactiveStreamsAPI

java.util.concurrent.Flow;

java.util.concurrent.Flow.Publisher;

java.util.concurrent.Flow.Subscriber; java.util.concurrent.Flow.Processor.

StackWalker

StackWalker.getInstance()

.walk(s -> s.limit(2). collect(Collectors.toList()));

List<StackFrame> stack = new StackWalker()

.walk((s) -> s.collect(Collectors.toList()));

Snapshot текущего потока

Соседние файлы в папке Лекции