Миссис java stream.... проста в использовании

Java задняя часть
Миссис java stream.... проста в использовании

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность

  • Сценарий: список объектов коллекции, теперь я хочу получить идентификатор каждого объекта в этой коллекции и сохранить эти значения идентификатора в другой коллекции, чтобы я мог запрашивать данные. Если бы вам нужно было выполнить это требование, какой метод вы бы использовали для его достижения?

Я предполагаю, что многие люди выберут объект коллекции переменной цикла, возьмут идентификатор и сохранят его в коллекции, код будет таким:

List<Clazz> list = clazzes;
List<Long> ids = new ArrayList();
for (Clazz clazz : list) {
    ids.add(clazz.getId());
}

но! На самом деле это требование можно решить всего одной строкой кода, так для чего она нужна? "Поток" смотрите код:

List<Clazz> list = clazzes;
List<Long> collect = list.stream().map(Clazz::getId).collect(Collectors.toList());

Использование потока одной строки кода может решить, что ключ выглядит четким. Строка кода list.stream().map(Clazz::getId).collect(Collectors.toList()) выше использует две новые функции JAVA8.

  • Двойное двоеточие Двойное двоеточие используется для передачи метода в качестве параметра требуемому методу или для передачи его функции stream(). Вот передать его потоку в его синтаксическом форматеимя класса::имя метода
  • stream Stream Конвертировать потоки в элементы коллекции через класс Collectors Над потоками много операций, можно обратиться в поисковую сеть

Позвольте поделиться с вами.Недавно, чтобы запросить данные в соответствии с графиком echart, я использовал много потоковых потоков в условиях фильтра оператора запроса и обнаружил, что использовать потоковые потоки действительно удобно.

Позвольте мне описать один из моих последних интерфейсов: этот интерфейс должен отображать четыре круговые диаграммы. Четыре круговые диаграммы: 1. Доля учителей-мужчин и женщин, 2. Доля каждой возрастной группы, 3. Доля образования, 4. Статистика профессиональных званий. Я хочу выполнить эти четыре запроса в одном интерфейсе, у меня есть несколько идей:

1. Необходимо написать несколько операторов запроса, а запрос требуется один (но очень хлопотно использовать разные условия фильтрации)

2. Использование представления может использоваться для вызова несколько раз (но в запросе будет операция, что проблематично)

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

 通过各种筛选条件查出的结果: teacherList (集合类型)
Long count1 = teacherList.stream().filter(e -> e.getGender().equals(0)).count(); //男生数量
Long count2 = teacherList.stream().filter(e -> e.getGender().equals(1)).count(); //女生数量

Делая это, вы можете напрямую рассчитать количество, не вычисляя данные.

А более подробную информацию о потоке можете зайти в интернет для поиска и изучения

Мое изучение потока все еще поверхностно, и есть много гибких применений, которые мне нужно продолжать изучать. Добро пожаловать в руководство!