实现具有动态生成属性的 Sortable class
Implement a Sortable class, that has dynamically generated properties
我想要一个可以按属性排序的 class(可能使用 Comparable 和 Comparator)。但是这个 class 不是普通的 class 属性,而是具有 'key value pair list'.
class Normal
{
String attrib1;
String attrib2;
int attrib3;
}
这个class属性
class Special
{
Map<String,Object> attributes =new HashMap<String,Object>()
}
基本上 class 属性是根据场景动态生成的。所以在给定的场景中,对象 属性 hashmap 将具有,
attrib1 : "value1"
attrib2 : "value2"
attrib3 : 3
所以我需要实现 class 'Special',其中 class 'Special' 类型的对象列表可以按给定的属性(等:按 attrib3 排序).
首先:
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"));
我想要一个可以按属性排序的 class(可能使用 Comparable 和 Comparator)。但是这个 class 不是普通的 class 属性,而是具有 'key value pair list'.
class Normal
{
String attrib1;
String attrib2;
int attrib3;
}
这个class属性
class Special
{
Map<String,Object> attributes =new HashMap<String,Object>()
}
基本上 class 属性是根据场景动态生成的。所以在给定的场景中,对象 属性 hashmap 将具有,
attrib1 : "value1"
attrib2 : "value2"
attrib3 : 3
所以我需要实现 class 'Special',其中 class 'Special' 类型的对象列表可以按给定的属性(等:按 attrib3 排序).
首先:
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"));