我有一个java Set
但我无法将其更改为TreeSet
,但我可以复制它。这是问题所在:
我有名字,塔,汽车,建筑物,办公室,地下室。我有一个POJO,它有一个字符串标签变量,包含每个实例中的一个。
我怎样才能将这些分类为塔楼,汽车,建筑物,办公室,地下室的精确顺序。当然不会有重复(一套)。
public class Places{
String label;
int moreinfo;
}
所以想象一下,我有10个Place对象,其标签可以是塔,汽车,建筑物,办公室,地下室中的任何一个:我如何在一组中对它们进行排序,以确保它们符合"塔的确切顺序,汽车,建筑,办公室,地下室" ?
答案 0 :(得分:1)
你可以转换字段'标签'进入enum,其中枚举值按自定义顺序排序。
public enum Label {
TOWER, CAR, BUILDING, OFFICE, BASEMENT
}
然后,您可以实现可比较的顺序来对集合进行排序。
class Places implements Comparable<Places>{
Label label;
int moreinfo;
@Override
public int compareTo(Places o) {
return label.compareTo(o.label);
}
}
然后,您可以使用Collections.sort方法进行排序。
答案 1 :(得分:0)
您可以使用Map定义任意字符串集的顺序:
private static Map<String, Integer> ordering;
static {
ordering = new HashMap<>();
ordering.add("tower", 1);
ordering.add("car", 2");
...add your other strings with increasing values...
}
Collections.sort(yourCollection, new Comparator<Places>() {
public int compare(Places p1, Places p2) {
return ordering.get(p1.label) - ordering.get(p2.label);
}
});
但是要小心......你不能对Set进行排序。如果它是一个SortedSet(如TreeSet),它将自行排序,如果不是它没有定义的顺序。