Stream

Map<Integer, Integer> map = new HashMap<>();
// Collection.stream() + Stream.forEach()
        map.values().stream()
                .forEach(System.out::println);
map.keySet().stream()
                .forEach(System.out::println);
TreeSet<Integer> set = new TreeSet<>();
set.forEach(integer -> {
            System.out.print(integer + " ");
        });

Read from console

Scanner in = new Scanner(System.in);
String name = in.nextLine();
int number = in.nextInt();
//input from file
FileInputStream inputStream = new FileInputStream(name);
    int max = 0;
    while (inputStream.available() > 0) //пока остались непрочитанные байты
    {
        int data = inputStream.read(); //прочитать очередной байт
        if (data>max){
            max = data;
        }
    }
    System.out.println(max);
    inputStream.close();
}

Java collections

List — хранит упорядоченные елементы(могут быть одинаковые); Имеет такие реализации как LinkedList, ArrayList и Vector.

ArrayList

LinkedList

Когда использовать ArrayList и LinkedList?

Если нам требуется произвести большое количество вставок или удалений, то нам следует использовать LinkedList. Если у нас имеется мало вставок или удалений, но выполняется много поисковых операций, то тогда нам следует использовать ArrayList.

 

Set — коллекции, которые не содержат повторяющихся элементов.

Реализации: HashSet, TreeSet, LinkedHashSet

  • TreeSet — упорядочивает элементы по их значениям;
  • HashSet — упорядочивает элементы по их хэш ключам
  • LinkedHashSet — хранит элементы в порядке их добавления


Queue — интерфейс для реализации очереди.

Основные реализации: LinkedList, PriorityQueue.

принцип FIFO – first in first out.

Map — интерфейс для реализации элементов с их ключами.

Основные реализации: HashTable, HashMap, TreeMap, LinkedHashMap

  • HashTable — синхронизирована, объявлена уставревшей.
  • HashMap — порядок елементов рассчитывается по хэш ключу;
  • TreeMap — элементы хранятся в отсортированном порядке
  • LinkedHashMap — элементы хранятся в порядке вставки

Ключи в Мар не одинаковые

Java: циклы for, while, foreach, do..while

Цикл for от 0 до 5:

for (int i = 0; i < 5; i++){
    System.out.println(i);
}

Hint! В IDE Idea ввести fori + tab

Обратный отсчет, цикл while:

int i = 10;
while (i > 0){

    System.out.println(i);
    i--;
}

Массив, значения:

int numbers [] = {7, 12, 8, 12};
for (int i=0; i<numbers.length; i++)
{

    System.out.println(numbers[i]);
}

Цикл for each (аналог примера выше):

int numbers [] = {7, 12, 8, 12};
for (int number : numbers) {
    System.out.println(number);

Hint! В IDE Idea ввести iter + enter

Цикл с do while:

int i = 10;
do {
    System.out.println(i);
    i++;
} while (i < 15);

Сборщики модулей, оптимизация и автоматизация

Сборщики используются для удобства разделения кода на определенные модули, с которыми удобно работать, легко добавляются новые модули, их можно использовать повторно, различные операции вроде оптимизации кода могут быть выполнены в автоматическом режиме.

Webpack

(на NodeJS)

http://webpack.github.io

Сборщик модулей с большим количеством функций и плагинов. Webpack собирает различные JS — файлы, или, например, CSS — стили, HTML-файлы, даже изображения, соединяет и формирует один оптимизированный файл.

Видео на тему: https://learn.javascript.ru/screencast/webpack

Brunch

http://brunch.io

Сравнение с другими сборщиками: http://brunch.io/docs/why-brunch#brunch-vs-webpack

Browserify

(на NodeJS)

Загрузчик и сборщик модулей JS

http://browserify.org

Подробно  про Browserify: http://prgssr.ru/development/nachinaem-rabotu-s-browserify.html

Babel

http://babeljs.io

Babel — это транспайлер, то есть позволяет переводить код из одного языка в другой.

Здесь можно попробовать его в работе на примере перевода Javascript es-6 в es-5 и наоборот: https://babeljs.io/repl/

Немного про работу babel: https://codedojo.ru/tutorials/babel

Gulp

(на NodeJS)

http://gulpjs.com

Инструмент позволяет описывать задачи и осуществить любые операции, такие как сборка модулей, очистка, тестирование, загрузка, сохранение и прочие.

Подбробно про Gulp: https://webformyself.com/gulp-dlya-nachinayushhix/

Видеоуроки: https://learn.javascript.ru/screencast/gulp

Grunt

(на NodeJS)

https://gruntjs.com

Таже описывает и автоматизирует задачи, оптимизирует код, как JS, так и HTML и CSS.

Подробнее про Grunt: https://webref.ru/dev/grunt-getting-started

 

Сравнение между собой: https://habrahabr.ru/post/215131/

Сравнение сборщиков на англ:  https://survivejs.com/webpack/appendices/comparison/

https://da-14.com/blog/gulp-vs-grunt-vs-webpack-comparison-build-tools-task-runners

Другие статьи: