关于Set和Map中的Comparator排序好像有BUG??
未确认
问题大致描述:
一个商品Class(包括barcode,name,price...),通过数据工厂得到一组商品,放入HashSet和HashMap中,
然后放入TreeSet、TreeMap中排序,问题就出来了,如果不按默认的排序,
用Comparator来做,按照商品的price排序,此时得到的TreeSet或者TreeMap就只有一条同价格的商品
例如有3条价格为2.8的商品,但结果只有一条,到现在我也不知道是不是JDK的BUG,解决起来虽然很简单就解决了,但问题是这样不就违背了JDK中Comparator的本意了吗?附上代码,在V0版本中有问题,在V1中没问题,V1中我加了注释,求高手解答下。郁闷,怎么传附件的没找到地方啊晕放到我的资源里面了,高手看下哦
http://dl5.csdn.net/fd.php?i=417814552867656&s=9a4666bac7bd9231a2efd1f88b0c8b33

解决方案 »

  1.   

    朋友提供的一个下载连接
    http://solosky.1stfreehosting.com/files/is.colletion.bug.rar
      

  2.   

    1、HashSet中不能存放重复数据,如果放入两条或以上相同的数据,HashSet中只会保存一条。
    2、你把数据放到HashMap中,HashMap会对put进来的数据按自己的规则排序,如果想按put数据的顺序排序,那就直接用LinkedHashMap吧。
      

  3.   

    我当然知道HashSet中不能放重复的数据了
    问题是<key,value>,我的key是不重复的,然后将这个HashSet放入TreeSet中,不过这个时候我用Comparator来做排序,并且是根据value中的某个Flied来排的,它是可能重复的,于是得到的TreeMap就少记录了
    例如:
    key    value
    001    3.2
    002    3.2
    003    4.2
    004    5.2
    这样放进HashSet中4条数据都在,假定为gdsHashSet
    接着讲gdsHashSet放入TreeSet中,此时,用Comparator,并且用value来排序
    于是就少记录了
    key    value
    001    3.2
    003    4.2
    004    5.2
    这样不就违背了Comparator的本意了吗?