-1

具有包含路由器接口的列表:-

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 中实现这种类型的排序。

4

3 回答 3

2

将字符串解析为class,并class使用适当的 对列表进行排序Comparator

就像是

class GigabitEthernet{
    public int num; //up/down?
    public int denom;
    public GigabitEthernet(String str); // parse
    public String toString(); //regenerate string
}

这应该使比较器更清洁

于 2013-01-29T07:46:19.040 回答
1

实现您自己的比较器实例并sort使用比较器调用方法:http: //goo.gl/Zz13w

您的比较器将控制排序顺序。

于 2013-01-29T07:46:09.490 回答
1

使用 Collections 中的方法,该方法将比较器作为第二个参数(http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Collections.html#sort%28java.util.List, %20java.util.Comparator%29)并实现例如一个匿名比较器类,它为您的排序进行正确的比较

于 2013-01-29T07:48:11.473 回答