实现具有动态生成的属性的{{sort}类}

我想要一个可以按属性排序的类(可能使用Comparable和Comparator)。但是,该类具有普通的类属性,而不是“键值对列表”。

class Normal
{
   String attrib1;
   String attrib2;
   int attrib3;
}

此类属性

class Special
{
    Map<String,Object> attributes =new HashMap<String,Object>()
}

基本上,类属性是根据场景动态生成的。因此,在给定的情况下,对象属性哈希图将具有

attrib1 : "value1"
attrib2 : "value2"
attrib3 : 3

因此,我需要实现“特殊”类,其中可以通过给定的样式对“特殊”类型的对象列表进行排序(例如:按attrib3排序)。

hahaquanquan 回答:实现具有动态生成的属性的{{sort}类}

首先:

public class Special {

     Map<String,Comparable> hashMap = new HashMap<String,Comparable>();
}

这些值必须实现Comparable接口。

然后您可以使用类似的比较器:

public class SpecialComparator implements Comparator<Special> {

    private String key;

    public SpecialComparator(String key) {
        this.key = key;
    }

    @Override
    public int compare(Special o1,Special o2) {
        // manage cases where o1 or o2 do not contains key
        return o1.hashMap.get(key).compareTo(o2.hashMap.get(key));
    }

}

最后对您的列表进行排序:

Collections.sort(list,new SpecialComparator("somekey"));
本文链接:https://www.f2er.com/2715059.html

大家都在问