我有一个对象列表,我想按照定义的顺序对其进行排序。
对于前。我有一个带有字段的对象String color
。我想在颜色字段上对我的列表进行排序,以便它总是首先是白色,然后是蓝色,然后是黄色,然后是所有其他(如果可能的话,alpha.ordered但不是必需的):
Before sorting: After sorting:
orange white
white blue
green yellow
brown orange
yellow black
black brown
... ...
有没有一种(简单的)方法可以做到这一点?
EDIT:
我必须添加一个复杂的情况......
如果可以有更多具有相同名称/基数的颜色怎么办?对于前。白色X、白色Y、白色Z、蓝色A、蓝色B、...
所有白色必须先于所有蓝色、所有黄色以及所有其他颜色。仍然可以用比较器来解决这个问题吗? (我无法想象如何...)
这是另一个选择:
Map<Integer, String> tree = new TreeMap<Integer, String>();
List<String> listOrdre = Arrays.asList("white", "blue", "yellow", "orange", "black", "brown");
List<String> myList = Arrays.asList("orange", "white", "brown", "yellow", "black");
for (String code : myList) {
tree.put(listOrdre.indexOf(code), code);
}
System.out.println(tree.values()); // -> [white, yellow, orange, black, brown]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)