1.在使用String类中split(String regex)切割字符串abcd.job遇得到job字符串时,直接使用split("."),导致数组超出界限错误
原因:得到的数组长度为0.
结论:对于像 . ,*,|这些特殊的字符作为切割界限符时要加转义字符,如:“\\.”,"\\|"。
2.在Job文件中,对于流程-待办,待办-变量两者都是一对多的关系,
在fn-xte中,项目表示Job文件数据的方式是,String-List<Map<String,List<VarMeta>>>,第一个String代表流程key,第二个代表待办key;
由于自身不同的需求,用JavaBean ProcessMeta表示流程,JobMeta代表待办,VarMeta代表变量,三者的关系为Map<ProcessMeta,List<Map<JobMeta,List<VarMeta>>>>,
问题:在实现过程中,随着数据的读取,ProcessMeta相应的属性会被赋值,赋值前后,所在map对应的位置是一样的
解决:分析原因得知,自己写的ProcessMeta对象没有重写hashCode(),equals()方法,当忘HashMap存值时,调用的是Object的hashCode()方法,所以ProcessMeta的属性无论怎样变化,ProcessMeta的hash值都不会变化。
总结:通过这个小项目,对流,集合这些知识有了更加清晰的认识,自己的理论的得以实践,对于项目的调试也有了一定的经验。
后续将会对这个小项目进行重构,提高其复用性,扩张性,提高性能,将自己的其他理论知识落地。
原文地址:https://www.cnblogs.com/gulingjingguai/p/9484267.html
时间: 2024-10-12 19:54:30