-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そのリストをソートします。classComparator

何かのようなもの

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

コンパレーターを 2 番目の引数として取る 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 に答える
1

独自のコンパレータ インスタンスを実装し、コンパレータでsortメソッドを呼び出します: http://goo.gl/Zz13w

コンパレータはソート順を制御します。

于 2013-01-29T07:46:09.490 に答える