博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个Bug的反思
阅读量:5884 次
发布时间:2019-06-19

本文共 1952 字,大约阅读时间需要 6 分钟。

对输入数据判重,使用Map,将对象作为Key,使用map的containsKey方法来着重是否是重复记录。

正常的处理流程:
(1)将输入的数据封装成对象
(2)判重,将没有重复的数据存储到map
(3)对没有重复的数据,进行校验
(4)将部分输入的数据,转换成数据库存储时的格式

问题:因为对已经存储在map中的对象中的字段进行了修改,即使后面的输入的对象与前一个重复,判重就会失效。

反思:
这个逻辑的流程是:(1)得到输入--》(2)判重--》(3)将部分字段的值更改成数据库存储的值--》(4)持久化
第三部,更改了对象的值,因为会导致判重的预期失效,见下例子

import java.util.HashMap;import java.util.Map;/*2015-9-20*/public class MapDemo {    public static void main(String[] args) {        Map
info = new HashMap
(); Person person = new Person("xiaoming", 1); info.put(person, person.getName()); print(info, person); person.setSalary(2); System.out.println(String.format("Get a pay raise:%d to %d", 1, 2)); print(info, person); person = new Person("xiaoming", 1); print(info, person); } private static void print(Map
info, Person person) { System.out.println(String.format("get '%s' from '%s'.Result: '%s'", person, info, info.get(person))); }}class Person { private String name; private int salary; public Person(String name, int salary) { super(); this.name = name; this.salary = salary; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } @Override public String toString() { return "Person [name=" + name + ", salary=" + salary + "]"; }}

Output:

get 'Person [name=xiaoming, salary=1]' from '{Person [name=xiaoming, salary=1]=xiaoming}'.Result: 'xiaoming'Get a pay raise:1 to 2get 'Person [name=xiaoming, salary=2]' from '{Person [name=xiaoming, salary=2]=xiaoming}'.Result: 'xiaoming'get 'Person [name=xiaoming, salary=1]' from '{Person [name=xiaoming, salary=2]=xiaoming}'.Result: 'null'

 

转载于:https://www.cnblogs.com/softidea/p/4824376.html

你可能感兴趣的文章
影响企业信息化成败的几点因素
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
struts中的xwork源码下载地址
查看>>
ABP理论学习之仓储
查看>>
我的友情链接
查看>>
Tengine新增nginx upstream模块的使用
查看>>
CentOS图形界面和命令行切换
查看>>
HTML5通信机制与html5地理信息定位(gps)
查看>>
汽车常识全面介绍 - 悬挂系统
查看>>
加快ALTER TABLE 操作速度
查看>>
学习笔记之软考数据库系统工程师教程(第一版)
查看>>
PHP 程序员的技术成长规划
查看>>
memcached 分布式聚类算法
查看>>
jquery css3问卷答题卡翻页动画效果
查看>>
$digest already in progress 解决办法——续
查看>>
mysql 数据类型
查看>>
Ubuntu 设置当前用户sudo免密码
查看>>
ionic 调用手机的打电话功能
查看>>
怎么使用阿里云直播服务应用到现在主流直播平台中
查看>>
判断点是否在三角形内
查看>>