Stream流的用法

目录

1.遍历输出list

2.遍历输出对象

3.遍历对象--将某个字段设成我们指定的值

4.遍历对象--遍历到了我们要的值就改变里面的属性

5.过滤-我们只要18岁以上的人

6.去重--去除完全相同的数据

7.去重--根据username来去重

8.统计

9.截取--我们只需要多少条记录,我们自己定

10.排序操作

11.指定排序操作

12.判断

判断是否有超过24岁的人,只要有一个就返回true

判断是否全部的人都超过24岁的人,只要有一个不是就返回false

判断是否全部的人都不超过24岁的人,只要有一个超过就返回false

13.将对象的中的某个字段变成集合

14.获取年龄最大的人和年龄最小的人

15.获取所有年龄最大的人和所有年龄最小的人

16.自定义排序-根据名字自定义排序

17.根据visit字段来排序降序排序(大到小),然后取前面5个数据

18.分组-当从数据库判断如果type=**,就加入到对应的list里面


1.遍历输出list

package com.lpc.Test;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author lpc
 * @Date 2024 01 09 20 34
 **/
public class Stream {

    //System.out.println()  快捷键:sout
    @Test
    public void  list() {
        List<String> list = new ArrayList<>();
        list.add("炭治郎");
        list.add("伊之助");
        list.add("善逸");
        list.stream().forEach(s -> System.out.println("value:"+s));
    }


}

2.遍历输出对象

Users

package com.lpc.entity;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @Author lpc
 * @Date 2024 01 08 10 24
 **/

@Data //简化实体类,get,set,构造都有了
@AllArgsConstructor
public class Users {
    private Integer id;
    private String username;
    private String password;

}

AllArgsConstructor 是 lombok 提供的一个注解,它可以为类生成一个包含所有字段的构造函数。使用 @AllArgsConstructor 注解,你就不需要手动编写构造函数,lombok 会自动生成一个构造函数,并将所有字段作为参数。

依赖

 <!--Lombok 是一个开发工具,可以通过注解自动化生成 Java 代码中的一些样板代码,
        如 getter、setter、构造函数等,减少了编写冗余代码的工作量。-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
<properties>
        <!--依赖版本控制-->
        <lombok.version>1.18.16</lombok.version>
    </properties>

Test

package com.lpc.Test;

import com.lpc.entity.Users;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author lpc
 * @Date 2024 01 09 20 34
 **/
public class Stream {

    //System.out.println()  快捷键:sout
   
    @Test
    public void Users(){
        List<Users> userList=new ArrayList<>();
        userList.add(new Users(1, "user1", "password1"));
        userList.add(new Users(2, "user2", "password2"));
        userList.add(new Users(3, "user3", "password3"));

        userList.stream().forEach(users -> System.out.println(users));
    }



}

结果

3.遍历对象--将某个字段设成我们指定的值

@Test
    public void Users(){
        List<Users> userList=new ArrayList<>();
        userList.add(new Users(1, "user1", "password1"));
        userList.add(new Users(2, "user2", "password2"));
        userList.add(new Users(3, "user3", "password3"));

        //将密码统一改成520
        userList.stream().forEach(users -> users.setPassword("520"));
        //遍历输出
        userList.stream().forEach(users -> System.out.println(users));


    }

结果:

4.遍历对象--遍历到了我们要的值就改变里面的属性

 Users

package com.lpc.entity;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @Author lpc
 * @Date 2024 01 08 10 24
 **/

@Data //简化实体类,get,set,构造都有了
@AllArgsConstructor
public class Users {
    private Integer id;
    private String username;
    private String password;

}

AllArgsConstructor 是 lombok 提供的一个注解,它可以为类生成一个包含所有字段的构造函数。使用 @AllArgsConstructor 注解,你就不需要手动编写构造函数,lombok 会自动生成一个构造函数,并将所有字段作为参数。

依赖

 <!--Lombok 是一个开发工具,可以通过注解自动化生成 Java 代码中的一些样板代码,
        如 getter、setter、构造函数等,减少了编写冗余代码的工作量。-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
<properties>
        <!--依赖版本控制-->
        <lombok.version>1.18.16</lombok.version>
    </properties>

Test

package com.lpc.Test;

import com.lpc.entity.Users;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author lpc
 * @Date 2024 01 09 20 34
 **/
public class Stream {

    //System.out.println()  快捷键:sout
   
    @Test
    public void Users2(){
        List<Users> userList=new ArrayList<>();
        userList.add(new Users(1, "user1", "password1"));
        userList.add(new Users(2, "user2", "password2"));
        userList.add(new Users(3, "user3", "password3"));

       //遍历到了id=2,就把它的username改成:炭治郎
        userList.stream().forEach(users -> {
            if (users.getId().equals(2)){
                users.setUsername("炭治郎");
            }
        });

        userList.stream().forEach(users -> System.out.println(users));
    }



}

结果

5.过滤-我们只要18岁以上的人

Users

package com.lpc.entity;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @Author lpc
 * @Date 2024 01 08 10 24
 **/

@Data //简化实体类,get,set,构造都有了
@AllArgsConstructor
public class Users {
    private Integer id;
    private String username;
    private String password;
    private Integer age;

}

AllArgsConstructor 是 lombok 提供的一个注解,它可以为类生成一个包含所有字段的构造函数。使用 @AllArgsConstructor 注解,你就不需要手动编写构造函数,lombok 会自动生成一个构造函数,并将所有字段作为参数。

依赖

 <!--Lombok 是一个开发工具,可以通过注解自动化生成 Java 代码中的一些样板代码,
        如 getter、setter、构造函数等,减少了编写冗余代码的工作量。-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
<properties>
        <!--依赖版本控制-->
        <lombok.version>1.18.16</lombok.version>
    </properties>

Test

@Test
    public void Users2(){
        List<Users> userList=new ArrayList<>();
        userList.add(new Users(1, "user1", "password1",25));
        userList.add(new Users(2, "user2", "password2",17));
        userList.add(new Users(3, "user3", "password3",19));

       //过滤掉18岁以下的
       List<Users> newUserList=userList.stream().filter(users -> users.getAge()>=18).collect(Collectors.toList());
        System.out.println(newUserList);

    }

6.去重--去除完全相同的数据

Users

package com.lpc.entity;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @Author lpc
 * @Date 2024 01 08 10 24
 **/

@Data //简化实体类,get,set,构造都有了
@AllArgsConstructor
public class Users {
    private Integer id;
    private String username;
    private String password;
    private Integer age;

}

AllArgsConstructor 是 lombok 提供的一个注解,它可以为类生成一个包含所有字段的构造函数。使用 @AllArgsConstructor 注解,你就不需要手动编写构造函数,lombok 会自动生成一个构造函数,并将所有字段作为参数。

依赖

 <!--Lombok 是一个开发工具,可以通过注解自动化生成 Java 代码中的一些样板代码,
        如 getter、setter、构造函数等,减少了编写冗余代码的工作量。-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
<properties>
        <!--依赖版本控制-->
        <lombok.version>1.18.16</lombok.version>
    </properties>

Test

 @Test
    public void Users3(){
        List<Users> userList=new ArrayList<>();
        userList.add(new Users(1, "user1", "password1",25));
        userList.add(new Users(2, "user2", "password2",17));
        userList.add(new Users(3, "user3", "password3",19));
        userList.add(new Users(3, "user3", "password3",19));
        userList.add(new Users(3, "user3", "password3",19));
        userList.add(new Users(3, "user3", "password3",19));
        
        //去除完全相同的数据
       userList=userList.stream().distinct().collect(Collectors.toList());
        System.out.println(userList);


    }

7.去重--根据username来去重

Users

package com.lpc.entity;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @Author lpc
 * @Date 2024 01 08 10 24
 **/

@Data //简化实体类,get,set,构造都有了
@AllArgsConstructor
public class Users {
    private Integer id;
    private String username;
    private String password;
    private Integer age;

}

AllArgsConstructor 是 lombok 提供的一个注解,它可以为类生成一个包含所有字段的构造函数。使用 @AllArgsConstructor 注解,你就不需要手动编写构造函数,lombok 会自动生成一个构造函数,并将所有字段作为参数。

依赖

 <!--Lombok 是一个开发工具,可以通过注解自动化生成 Java 代码中的一些样板代码,
        如 getter、setter、构造函数等,减少了编写冗余代码的工作量。-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
<properties>
        <!--依赖版本控制-->
        <lombok.version>1.18.16</lombok.version>
    </properties>

Test

 @Test
    public void Users4(){
        List<Users> userList = new ArrayList<>();
        userList.add(new Users(1, "user1", "password1", 25));
        userList.add(new Users(2, "user2", "password2", 17));
        userList.add(new Users(3, "user3", "password3", 19));
        userList.add(new Users(4, "user3", "password3", 19)); // 重复记录
        userList.add(new Users(5, "user3", "password3", 19)); // 重复记录
        userList.add(new Users(6, "user3", "password3", 19)); // 重复记录

        //根据username去重
        List<Users> userList2=userList.stream().collect(
                Collectors.collectingAndThen(Collectors.toCollection(
                        () -> new TreeSet<>(Comparator.comparing(users -> users.getUsername()))), ArrayList::new)
        );

        System.out.println(userList2);
    }

8.统计

Users

package com.lpc.entity;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @Author lpc
 * @Date 2024 01 08 10 24
 **/

@Data //简化实体类,get,set,构造都有了
@AllArgsConstructor
public class Users {
    private Integer id;
    private String username;
    private String password;
    private Integer age;

}

AllArgsConstructor 是 lombok 提供的一个注解,它可以为类生成一个包含所有字段的构造函数。使用 @AllArgsConstructor 注解,你就不需要手动编写构造函数,lombok 会自动生成一个构造函数,并将所有字段作为参数。

依赖

 <!--Lombok 是一个开发工具,可以通过注解自动化生成 Java 代码中的一些样板代码,
        如 getter、setter、构造函数等,减少了编写冗余代码的工作量。-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
<properties>
        <!--依赖版本控制-->
        <lombok.version>1.18.16</lombok.version>
    </properties>

Test

 @Test
    public void Users6(){
        List<Users> userList = new ArrayList<>();
        userList.add(new Users(1, "user1", "password1", 25));
        userList.add(new Users(2, "user2", "password2", 17));
        userList.add(new Users(3, "user3", "password3", 19));
        userList.add(new Users(4, "user4", "password4", 19)); // 重复记录
        userList.add(new Users(5, "user5", "password5", 19)); // 重复记录
        userList.add(new Users(6, "user6", "password6", 19)); // 重复记录

        //统计
        Long count=userList.stream().count();
        System.out.println( count);
    }

9.截取--我们只需要多少条记录,我们自己定

Users

package com.lpc.entity;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @Author lpc
 * @Date 2024 01 08 10 24
 **/

@Data //简化实体类,get,set,构造都有了
@AllArgsConstructor
public class Users {
    private Integer id;
    private String username;
    private String password;
    private Integer age;

}

AllArgsConstructor 是 lombok 提供的一个注解,它可以为类生成一个包含所有字段的构造函数。使用 @AllArgsConstructor 注解,你就不需要手动编写构造函数,lombok 会自动生成一个构造函数,并将所有字段作为参数。

依赖

 <!--Lombok 是一个开发工具,可以通过注解自动化生成 Java 代码中的一些样板代码,
        如 getter、setter、构造函数等,减少了编写冗余代码的工作量。-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
<properties>
        <!--依赖版本控制-->
        <lombok.version>1.18.16</lombok.version>
    </properties>

Test

 @Test
    public void Users7(){
        List<Users> userList = new ArrayList<>();
        userList.add(new Users(1, "user1", "password1", 25));
        userList.add(new Users(2, "user2", "password2", 17));
        userList.add(new Users(3, "user3", "password3", 19));
        userList.add(new Users(4, "user4", "password4", 19)); // 重复记录
        userList.add(new Users(5, "user5", "password5", 19)); // 重复记录
        userList.add(new Users(6, "user6", "password6", 19)); // 重复记录

        //只需要前三条数据
        userList=userList.stream().limit(3).collect(Collectors.toList());
        System.out.println(userList);
    }

10.排序操作

Users

package com.lpc.entity;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @Author lpc
 * @Date 2024 01 08 10 24
 **/

@Data //简化实体类,get,set,构造都有了
@AllArgsConstructor
public class Users {
    private Integer id;
    private String username;
    private String password;
    private Integer age;

}

AllArgsConstructor 是 lombok 提供的一个注解,它可以为类生成一个包含所有字段的构造函数。使用 @AllArgsConstructor 注解,你就不需要手动编写构造函数,lombok 会自动生成一个构造函数,并将所有字段作为参数。

依赖

 <!--Lombok 是一个开发工具,可以通过注解自动化生成 Java 代码中的一些样板代码,
        如 getter、setter、构造函数等,减少了编写冗余代码的工作量。-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
<properties>
        <!--依赖版本控制-->
        <lombok.version>1.18.16</lombok.version>
    </properties>

Test

@Test
    public void Users8() {
        List<Users> userList = new ArrayList<>();
        userList.add(new Users(1, "user1", "password1", 25));
        userList.add(new Users(2, "user2", "password2", 17));
        userList.add(new Users(3, "user3", "password3", 19));
        userList.add(new Users(4, "user4", "password4", 18));
        userList.add(new Users(5, "user5", "password5", 19)); 
        userList.add(new Users(6, "user6", "password6", 20)); 
        //根据年龄从小到大排序
        userList = userList.stream().sorted(Comparator.comparing(Users::getAge)).collect(Collectors.toList());
        System.out.println(userList);

        System.out.println("--------------------------------------------------------------");
        //根据年龄从大到小排序
        List<Users> users = userList.stream().sorted(Comparator.comparing(Users::getAge).reversed()).collect(Collectors.toList());

        System.out.println(users);
    }

11.指定排序操作

12.判断

判断是否有超过24岁的人,只要有一个就返回true

Users

package com.lpc.entity;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @Author lpc
 * @Date 2024 01 08 10 24
 **/

@Data //简化实体类,get,set,构造都有了
@AllArgsConstructor
public class Users {
    private Integer id;
    private String username;
    private String password;
    private Integer age;

}

AllArgsConstructor 是 lombok 提供的一个注解,它可以为类生成一个包含所有字段的构造函数。使用 @AllArgsConstructor 注解,你就不需要手动编写构造函数,lombok 会自动生成一个构造函数,并将所有字段作为参数。

依赖

 <!--Lombok 是一个开发工具,可以通过注解自动化生成 Java 代码中的一些样板代码,
        如 getter、setter、构造函数等,减少了编写冗余代码的工作量。-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
<properties>
        <!--依赖版本控制-->
        <lombok.version>1.18.16</lombok.version>
    </properties>

Test

 @Test
    public void Users9() {
        List<Users> userList = new ArrayList<>();
        userList.add(new Users(1, "user1", "password1", 25));
        userList.add(new Users(2, "user2", "password2", 17));
        userList.add(new Users(3, "user3", "password3", 19));
        userList.add(new Users(4, "user4", "password4", 18)); // 重复记录
        userList.add(new Users(5, "user5", "password5", 19)); // 重复记录
        userList.add(new Users(6, "user6", "password6", 20)); // 重复记录

        //判断userList里面是否有超过24的人,只要有一个就返回true
        boolean flag=userList.stream().anyMatch(users -> users.getAge()>=24);
        System.out.println(flag);
    }

判断是否全部的人都超过24岁的人,只要有一个不是就返回false

@Test
    public void Users10() {
        List<Users> userList = new ArrayList<>();
        userList.add(new Users(1, "user1", "password1", 25));
        userList.add(new Users(2, "user2", "password2", 17));
        userList.add(new Users(3, "user3", "password3", 19));
        userList.add(new Users(4, "user4", "password4", 18)); // 重复记录
        userList.add(new Users(5, "user5", "password5", 19)); // 重复记录
        userList.add(new Users(6, "user6", "password6", 20)); // 重复记录

        //判断userList里面是否有超过24的人,只要有一个就返回true
        boolean flag=userList.stream().allMatch(users -> users.getAge()>=24);
        System.out.println(flag);
    }

判断是否全部的人都不超过24岁的人,只要有一个超过就返回false

@Test
    public void Users10() {
        List<Users> userList = new ArrayList<>();
        userList.add(new Users(1, "user1", "password1", 25));
        userList.add(new Users(2, "user2", "password2", 17));
        userList.add(new Users(3, "user3", "password3", 19));
        userList.add(new Users(4, "user4", "password4", 18)); // 重复记录
        userList.add(new Users(5, "user5", "password5", 19)); // 重复记录
        userList.add(new Users(6, "user6", "password6", 20)); // 重复记录

        //判断userList里面是否有超过24的人,只要有一个就返回true
        boolean flag=userList.stream().noneMatch(users -> users.getAge()>=24);
        System.out.println(flag);
    }

13.将对象的中的某个字段变成集合

Users

package com.lpc.entity;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @Author lpc
 * @Date 2024 01 08 10 24
 **/

@Data //简化实体类,get,set,构造都有了
@AllArgsConstructor
public class Users {
    private Integer id;
    private String username;
    private String password;
    private Integer age;

}

AllArgsConstructor 是 lombok 提供的一个注解,它可以为类生成一个包含所有字段的构造函数。使用 @AllArgsConstructor 注解,你就不需要手动编写构造函数,lombok 会自动生成一个构造函数,并将所有字段作为参数。

依赖

 <!--Lombok 是一个开发工具,可以通过注解自动化生成 Java 代码中的一些样板代码,
        如 getter、setter、构造函数等,减少了编写冗余代码的工作量。-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
<properties>
        <!--依赖版本控制-->
        <lombok.version>1.18.16</lombok.version>
    </properties>

Test

 @Test
    public void Users11() {
        List<Users> userList = new ArrayList<>();
        userList.add(new Users(1, "user1", "password1", 25));
        userList.add(new Users(2, "user2", "password2", 17));
        userList.add(new Users(3, "user3", "password3", 19));
        userList.add(new Users(4, "user4", "password4", 18)); // 重复记录
        userList.add(new Users(5, "user5", "password5", 19)); // 重复记录
        userList.add(new Users(6, "user6", "password6", 20)); // 重复记录

        //将对象的中的某个字段变成集合
        List<String> nameList=userList.stream().map(users -> users.getUsername()).collect(Collectors.toList());
        // System.out.println();  快捷键:sout
        System.out.println(nameList);

    }

14.获取年龄最大的人和年龄最小的人

问题:我这样写只能查出一个人,有相同的最大年龄,相同的最小年龄不能都查出来

 @Test
    public void Users16() {
        List<Users> userList = new ArrayList<>();
        userList.add(new Users(1, "user1", "password1", 25));
        userList.add(new Users(2, "user2", "password2", 17));
        userList.add(new Users(3, "user3", "password3", 19));
        userList.add(new Users(4, "user4", "password4", 18));
        userList.add(new Users(5, "user5", "password5", 17));
        userList.add(new Users(6, "user6", "password6", 20));
        //获取年龄最大的
        Users user=userList.stream().max(Comparator.comparing(Users::getAge)).get();
        System.out.println(user);

        //获取年龄最小的
        Users user2=userList.stream().min(Comparator.comparing(Users::getAge)).get();
        System.out.println(user2);

       

    }

15.获取所有年龄最大的人和所有年龄最小的人

 @Test
    public void Users16() {
        List<Users> userList = new ArrayList<>();
        userList.add(new Users(1, "user1", "password1", 25));
        userList.add(new Users(2, "user2", "password2", 17));
        userList.add(new Users(3, "user3", "password3", 25));
        userList.add(new Users(4, "user4", "password4", 18));
        userList.add(new Users(5, "user5", "password5", 17));
        userList.add(new Users(6, "user6", "password6", 20));
        // 获取年龄最大的所有人
        int maxAge = userList.stream().max(Comparator.comparing(Users::getAge)).get().getAge();
        List<Users> oldestUsers = userList.stream().filter(u -> u.getAge() == maxAge).collect(Collectors.toList());
        System.out.println("年龄最大的人:");
        oldestUsers.forEach(System.out::println);

        // 获取年龄最小的所有人
        int minAge = userList.stream().min(Comparator.comparing(Users::getAge)).get().getAge();
        List<Users> youngestUsers = userList.stream().filter(u -> u.getAge() == minAge).collect(Collectors.toList());
        System.out.println("年龄最小的人:");
        youngestUsers.forEach(System.out::println);

    }

`System.out::println` 是 Java 8 中引入的方法引用(Method Reference)的语法。它表示对 `System.out.println` 方法的引用。具体而言,`System.out.println` 是一个静态方法,用于将参数打印到控制台,并换行。通过 `System.out::println`,你可以在流的 `forEach` 方法中将每个元素传递给 `System.out.println` 方法。

在上述代码中,`System.out.println` 是通过方法引用的方式传递给 `forEach` 方法。这意味着对于流中的每个元素,将调用 `System.out.println` 方法,并将元素作为参数传递给该方法。这样可以方便地打印出流中的元素。

方法引用是一种简化 Lambda 表达式的方法,可以提高代码的可读性和简洁性。 `System.out::println` 是其中一种常见的用法,表示引用 `System.out` 对象的 `println` 方法。

16.自定义排序-根据名字自定义排序

@Test
    public void Users17() {

        List<Users> userList = new ArrayList<>();
        userList.add(new Users(1, "user1", "password1", 25));
        userList.add(new Users(2, "user2", "password2", 17));
        userList.add(new Users(3, "user3", "password3", 25));
        userList.add(new Users(4, "user4", "password4", 18));
        userList.add(new Users(5, "user5", "password5", 17));
        userList.add(new Users(6, "user6", "password6", 20));

        List<String> nameList = Arrays.asList("user1","user3","user2","user4","user5","user6");
        userList =userList.stream().sorted(Comparator.comparing(Users::getUsername,(x, y)->
                {
                    for (String name : nameList) {
                        if (name.equals(x) || name.equals(y)) {
                            if (x.equals(y)) {
                                return 0;
                            } else if (name.equals(x)) {
                                return -1;
                            } else {
                                return 1;
                            }
                        }
                    }
                    return 0;
                })).

                collect(Collectors.toList());

        System.out.println("value:"+userList);

    }

17.根据visit字段来排序降序排序(大到小),然后取前面5个数据

 List<YcFile> sortedAndLimitedList = ycFileList.stream()
                .sorted(Comparator.nullsLast(Comparator.comparingLong(YcFile::getVisit).reversed()))
                //给出前5条阅读量最多的文件
                .limit(5)
                .collect(Collectors.toList());
  1. ycFileList.stream()ycFileList转换为一个流。
  2. sorted(Comparator.nullsLast(Comparator.comparingLong(YcFile::getVisit).reversed()))对流中的元素进行排序,首先使用Comparator.nullsLast对空值进行处理,然后使用Comparator.comparingLong(YcFile::getVisit)按照YcFile对象的visit属性进行升序排序,最后使用reversed()将排序结果反转,即按照降序排序。
  3. limit(5)限制只取前5条元素。
  4. collect(Collectors.toList())将流中的元素收集到一个新的List中,并将结果赋值给sortedAndLimitedList变量。
  5. 最终,sortedAndLimitedList中存储的是ycFileList中阅读量最多的前5个文件。

18.分组-当从数据库判断如果type=**,就加入到对应的list里面

@Test
    public void add(){
        // 创建一个包含多个元素的type数组
        Integer[] typeArray = {1, 2, 3, 1, 2, 3};

        List<Integer> typeList = new ArrayList<>(Arrays.asList(typeArray));

        List<Integer> oneList = new ArrayList<>();
        List<Integer> twoList = new ArrayList<>();
        List<Integer> threeList = new ArrayList<>();

        // 使用switch对类型进行判断并添加到相应的列表中
        typeList.forEach(type -> {
            switch (type) {
                case 1:
                    oneList.add(type);
                    break;
                case 2:
                    twoList.add(type);
                    break;
                case 3:
                    threeList.add(type);
                    break;
                default:
                    // 处理其他类型的情况
                    break;
            }
        });

        // 打印结果
        System.out.println("oneList: " + oneList);
        System.out.println("twoList: " + twoList);
        System.out.println("threeList: " + threeList);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值