Bar*_*lom 6 java sorting collections binary-tree red-black-tree
我需要一组有序的对象,目前正在使用TreeSet.我的问题是compareTo对象经常会返回0,这意味着这两个对象的顺序保持不变.TreeMap(TreeSet默认情况下使用)然后将它们视为同一个对象,这不是真的.
我TreeMap可以使用什么替代品?
使用案例:我有一组可显示的对象.我想按Y坐标对它们进行排序,以便它们以正确的顺序呈现.当然,两个对象可能具有相同的Y坐标.
您要定义一个要比较的条件,但您需要添加额外的条件.
你说:
我有一组可显示的对象.我想按Y坐标对它们进行排序,以便它们以正确的顺序呈现.当然,两个对象可能具有相同的Y坐标.
那么,如果两个元素具有相同的Y坐标,那么你先放入什么?其他标准是什么?
它可能是创建时间,也可能是x坐标,您只需要定义它:
Map<String,Thing> map = new TreeMap<String,Thing>(new Comparator<Thing>(){
     public int compare( Thing one, Thing two ) {
         int result = one.y - two.y;
         if( result == 0 ) { // same y coordinate use another criteria
             result = one.x - two.x;
             if( result == 0 ) { //still the same? Try another criteria ( maybe creation time
                 return one.creationTime - two.creationTime
             }
          }
          return result;
     }
});
您必须定义何时Thing高于/低于/等于/等于其他Thing.如果其中一个属性与其他属性相同,则可能不应移动它们.如果有其他属性要比较使用它.
| 归档时间: | 
 | 
| 查看次数: | 4923 次 | 
| 最近记录: |