Java实战:如何高效管理和关联用户信息与联系方式

  • Java实战:基于Java语言的实际应用示例。
  • 用户信息与联系信息的关联与处理:明确了文章的核心内容,即如何有效地将用户信息与其联系信息关联并进行相应的处理。

应用场景描述

这段示例代码展示了如何根据用户消息数据和用户联系信息数据,实现用户与其联系信息的关联与处理。具体应用场景可以是:

在一个用户管理系统中,用户可能会有多个联系信息,如电话号码、电子邮件等。而这些联系信息通常以不同的形式存储在数据库中。通过该示例代码,可以将用户与其所有联系信息进行关联,以便在系统中快速访问和展示用户的完整信息。例如,可以用于用户信息的展示页面或者系统的通讯录功能。

  1. 一对一关联

    • 使用 userMap 将每个用户的单个联系信息对象与其关联,适用于只有一个主要联系方式的情况。
  2. 一对多关联

    • 使用 userListMap 将每个用户的所有联系信息对象列表与其关联,适用于用户可能有多个联系方式的情况,例如多个电话号码或多个邮件地址。

通过这种关联和处理方式,可以提高系统的数据访问效率和用户信息的管理能力,确保用户信息的完整性和一致性。

上代码:

一、用户与联系方式测试数据

/**
     * 添加用户信息测试数据
     * @return
     */
    private List<User> getUserList(){
        List<User> userList = new ArrayList<>();
        User user1 = new User();
        user1.setUserId(1);
        user1.setUserName("测试01");
        user1.setAge(22);

        User user2 = new User();
        user2.setUserId(2);
        user2.setUserName("测试02");
        user2.setAge(23);

        userList.add(user1);
        userList.add(user2);
        return userList;
    }

    /**
     * 添加用户联系信息测试数据
     * @return
     */
    private List<UserRelation> getRelationList(){
        List<UserRelation> relationList = new ArrayList<>();
        UserRelation relation1 = new UserRelation();
        relation1.setId(1);
        relation1.setUserId(1);
        relation1.setPhone("15333333333");

        UserRelation relation2 = new UserRelation();
        relation2.setId(2);
        relation2.setUserId(1);
        relation2.setPhone("15444444444");

        UserRelation relation3 = new UserRelation();
        relation3.setId(2);
        relation3.setUserId(2);
        relation3.setPhone("15555555555");

        relationList.add(relation1);
        relationList.add(relation2);
        relationList.add(relation3);
        return relationList;
    }
@Test
public void test(){
    // 获取用户消息数据列表
    List<User> userList = getUserList();

    // 获取用户联系信息数据列表
    List<UserRelation> relationList = getRelationList();

    // 一对一关联,使用用户ID作为键,关联整个UserRelation对象
    Map<Integer, UserRelation> userMap = relationList
            .stream()
            .collect(Collectors.toMap(UserRelation::getUserId, Function.identity(), (existing, replacement) -> existing));

    // 一对多关联,使用用户ID作为键,关联该用户的所有UserRelation对象列表
    Map<Integer, List<UserRelation>> userListMap = relationList
            .stream()
            .collect(Collectors.groupingBy(UserRelation::getUserId));

    // 输出每个用户的联系信息列表
    userList.forEach(user -> {
        System.out.println(user.getUserId() + "::" + user.getUserName());

        // 获取该用户的联系信息列表
        List<UserRelation> userRelations = userListMap.get(user.getUserId());

        if (userRelations != null && !userRelations.isEmpty()) {
            // 处理业务,输出该用户的联系信息列表
            System.out.println(user.getUserName() + "的联系信息:" + userRelations);
        }
    });

    System.out.println("\n");

    // 输出每个用户的单个联系信息对象
    userList.forEach(user -> {
        System.out.println(user.getUserId() + "::" + user.getUserName());

        // 获取该用户的单个联系信息对象
        UserRelation userRelation = userMap.get(user.getUserId());

        if (userRelation != null) {
            // 处理业务,输出该用户的单个联系信息对象
            System.out.println(user.getUserName() + "的联系信息:" + userRelation);
        }
    });
}

控制台打印结果:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值