黑马程序员技术交流社区

标题: 很有技术含量的I/0问题,大家一起来看看 [打印本页]

作者: hollywood2014    时间: 2014-10-3 23:46
标题: 很有技术含量的I/0问题,大家一起来看看
小弟初来乍到,如果帖子没弄好,还请大家指正
我正在弄一个题目,比如有5张电话薄,我想把它合并成一张电话薄。他里面存的字符串的键值对,如:张三=110,李四=120等等,但是呢,电话薄中可能会有重复的键值,我们取最新的键值对保存起来(如果被搞糊涂了请告知我,我回帖的时候一定再仔细说)。
我通过用StringBuilder实现了基本的功能,即去重复值,取最新键值对,也遇到了一个问题
     这是合并后的电话薄


此时,我想对这个电话薄进行排序(第一行先不管),至于这前面的数字呢我是在读取的时候加入的,但是打印出来就成了这样(若有大神知晓,不妨多说两句)。
我的方法是,利用split“.”来切割读取的到一行,如String[] arr=line.split(".");
然后,比较arr[0]


当然,这个比较器是传给TreeSet<String>的,我把从文件中读取的每一行都保存到TreeSet<String>中,我的想法是,TreeSet<String>添加读取到的行时,他会调用比较器进行比较,但是结果是数组越界的错误,还请大侠们指点迷津,如果需要更多的code,务必告知。

作者: WakeUp    时间: 2014-10-3 23:59
为什么不将数据直接存入Map集合中,按照 姓名=电话 的形式?
key相同就不用添加
作者: Aaron_H    时间: 2014-10-4 14:40
楼主为啥不用map呢,map不用考虑重复的问题,会自动覆盖的
作者: -天然呆ノ    时间: 2014-10-4 17:18
使用map吧
作者: hollywood2014    时间: 2014-10-4 21:13
WakeUp 发表于 2014-10-3 23:59
为什么不将数据直接存入Map集合中,按照 姓名=电话 的形式?
key相同就不用添加 ...

兄台,我多说两句吧,我使用的是Properties,他能和IO流绑定,我基本的功能已经完成了,能去除重复的键值,但是我的问题是按照序号对已经输出的文件进行排序,然后出现了数组越界的错误,还请兄台明示
作者: WakeUp    时间: 2014-10-5 14:16
hollywood2014 发表于 2014-10-4 21:13
兄台,我多说两句吧,我使用的是Properties,他能和IO流绑定,我基本的功能已经完成了,能去除重复的键值 ...

Properties就是Map集合,没必要使用什么StringBuffer去重复,直接判断key是否重复就可以。
你把往Set集合存数据的地方贴出来,提示出错的地方也贴出来




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2