包含路由器接口的列表为: -
GigabitEthernet 1/0, GigabitEthernet 1/1,GigabitEthernet 1/11, GigabitEthernet 1/10, GigabitEthernet 1/3`
现在我正在应用Collection.sort(list)
进行排序,但它会导致一个问题,它会对此进行排序: -
GigabitEthernet 1/0, GigabitEthernet 1/1, GigabitEthernet 1/10, GigabitEthernet 1/11, GigabitEthernet 1/3`
但在我们的情况下,它应该像这样排序: -
GigabitEthernet 1/0, GigabitEthernet 1/1, GigabitEthernet 1/3, GigabitEthernet 1/10, GigabitEthernet 1/11`
如何在Java中实现这种类型的排序。
答案 0 :(得分:2)
将字符串解析为class
,并使用适当的class
对Comparator
的列表进行排序。
像
这样的东西class GigabitEthernet{
public int num; //up/down?
public int denom;
public GigabitEthernet(String str); // parse
public String toString(); //regenerate string
}
这应该使比较器更清洁
答案 1 :(得分:1)
实现您自己的比较器实例并使用比较器调用sort
方法:http://goo.gl/Zz13w
您的比较器将控制排序顺序。
答案 2 :(得分:1)
使用Collections中的方法,它将比较器作为第二个参数(http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Collections.html#sort%28java.util.List,%20java.util.Comparator%29)并实现一个匿名比较器类,它为您的排序做正确的比较