A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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


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


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

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

5 个回复

倒序浏览
为什么不将数据直接存入Map集合中,按照 姓名=电话 的形式?
key相同就不用添加
回复 使用道具 举报
楼主为啥不用map呢,map不用考虑重复的问题,会自动覆盖的
回复 使用道具 举报
使用map吧
回复 使用道具 举报
WakeUp 发表于 2014-10-3 23:59
为什么不将数据直接存入Map集合中,按照 姓名=电话 的形式?
key相同就不用添加 ...

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

Properties就是Map集合,没必要使用什么StringBuffer去重复,直接判断key是否重复就可以。
你把往Set集合存数据的地方贴出来,提示出错的地方也贴出来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马