java—实现一个可排序类,该类具有动态生成的属性

2exbekwf  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(413)

我想要一个可以按属性排序的类(可能使用comparable和comparator)。但是这个类没有普通的类属性,而是有一个“键值对列表”。

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

此类属性

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

基本上,类属性是基于场景动态生成的。所以在给定的场景中,对象属性hashmap,

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

所以我需要实现类'special',其中类'special'类型的对象列表可以按给定的attibute排序(etc:sortedbyattrib3)。

pcww981p

pcww981p1#

首先:

public class Special {

     Map<String, Comparable> hashMap = new HashMap<String, 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"));

相关问题