List对象子对象的字段或List对象字段进行排序

对List对象中的子对象的某个字段进行排序
首先初始化数据:

Student student1 = new Student("1","2",90,new User("1","2",10,"11"),"");
        Student student2 = new Student("2","3",840,new User("4","2",10,"11"),"");
        Student student3 = new Student("3","4",80,new User("3","2",10,"11"),"");
        Student student4 = new Student("4","7",90,new User("2","2",10,"11"),"");
        List<Student> students = new ArrayList<>();
        students.add(student1);
        students.add(student2);
        students.add(student3);
        students.add(student4);

根据Student中的User对象的id字段进行倒序排列

List<Student> studentList = students.stream()
                .sorted(Comparator.comparing((Function<Student,String>)student -> student.getUser().getId()).reversed())
                .collect(Collectors.toList());

方法二:

students.stream().forEach(student -> student.setUserId(student.getUser().getId()));
List<Student> list = students.stream().sorted(Comparator.comparing(Student::getUserId).reversed()).collect(Collectors.toList());
        students.sort(Comparator.comparing(Student::getUserId).reversed());

对List对象中的某个字段进行排序
首先初始化数据:

        User user1 = new User("1","2",10,"11");
        User user2 = new User("4","2",8,"11");
        User user3 = new User("3","2",10,"11");
        User user4 = new User("2","2",20,"11");

        List<User> userList = new ArrayList<>();
        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);

根据java8后的lambda表达式进行正序排序

List<User> users = userList.stream().sorted(Comparator.comparing(User::getId).reversed())
                .collect(Collectors.toList());

根据Collections的compare内置方法进行正序排序

Collections.sort(userList, new Comparator<User>() {
            @Override
            public int compare(User o1, User o2) {
                //降序,
                return o2.getId().compareTo(o1.getId());
            }
        });

简化后的写法

Collections.sort(userList, (o1, o2) -> o2.getId().compareTo(o1.getId()));

完整对象的补充

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {

    private String id;

    private String grade;

    private Integer score;

    private User user;

    private String userId;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果对象中包含了`List<>`类型的字段,而`List`中的元素又是一个对象,我们可以使用MyBatis的嵌套查询来实现插入操作。 假设我们有以下两个类: ```java public class User { private Long id; private String username; private List<Address> addresses; // 省略getter和setter方法 } public class Address { private String city; private String street; // 省略getter和setter方法 } ``` 要插入包含`List<Address>`的`User`对象,可以按照以下步骤进行操作: 1. 首先,创建一个插入`User`对象的方法: ```java @Insert("INSERT INTO user (username) VALUES (#{username})") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") void insertUser(User user); ``` 2. 接下来,创建一个插入`Address`对象的方法: ```java @Insert("INSERT INTO address (user_id, city, street) VALUES (#{userId}, #{city}, #{street})") void insertAddress(Address address); ``` 3. 在`insertUser`方法中,先插入`User`对象,获取自动生成的主键值: ```java userMapper.insertUser(user); Long userId = user.getId(); ``` 4. 然后,遍历`User`对象中的`List<Address>`字段,调用`insertAddress`方法插入每个地址对象: ```java for (Address address : user.getAddresses()) { address.setUserId(userId); userMapper.insertAddress(address); } ``` 通过以上步骤,我们可以实现将包含`List<Address>`的`User`对象插入到数据库中。在插入的过程中,先插入`User`对象获取主键值,然后遍历`List<Address>`,为每个地址对象设置关联的用户ID后插入。 需要注意的是,在数据库表中,需要有对应的`user`和`address`表,以及正确的外键关联。 总结起来,要插入包含`List<>`类型字段对象,可以通过嵌套查询的方式实现。先插入主对象,获取主键值后,再通过遍历对象列表,为每个对象设置关联的主键值后插入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值