- Java实战:基于Java语言的实际应用示例。
- 用户信息与联系信息的关联与处理:明确了文章的核心内容,即如何有效地将用户信息与其联系信息关联并进行相应的处理。
应用场景描述
这段示例代码展示了如何根据用户消息数据和用户联系信息数据,实现用户与其联系信息的关联与处理。具体应用场景可以是:
在一个用户管理系统中,用户可能会有多个联系信息,如电话号码、电子邮件等。而这些联系信息通常以不同的形式存储在数据库中。通过该示例代码,可以将用户与其所有联系信息进行关联,以便在系统中快速访问和展示用户的完整信息。例如,可以用于用户信息的展示页面或者系统的通讯录功能。
-
一对一关联:
- 使用
userMap
将每个用户的单个联系信息对象与其关联,适用于只有一个主要联系方式的情况。
- 使用
-
一对多关联:
- 使用
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);
}
});
}
控制台打印结果: