排序字符串有哪些方法,例如" 2001V001.10"?

时间:2016-11-07 11:49:56

标签: java algorithm sorting

在java中以任何顺序(升序/降序)对以下数据进行排序的方法有哪些 -

输入 -

2002V001.10
2003V001.10
2004V001.20
2001V002.10
2004V001.10
2001V001.10

.之前的字符串是版本,而.之后的字符串是子版本,并且在排序时都必须考虑这两个字符串。

预期输出

2001V001.10
2001V002.10
2002V001.10
2003V001.10
2004V001.10
2004V001.20

3 个答案:

答案 0 :(得分:2)

你可以创建一个这样的类:

public class StringsLike2001v001_10Comparator extends Comparator<String> {
    public int compare(String o1, String o2) {
        // implement your ordering logic here
    }
}

答案 1 :(得分:1)

将数据添加到树集会根据需要对其进行排序。

注意:删除重复项。

public static void main(String[] args) {
        TreeSet<String> a = new TreeSet<String>();
        a.add("2001V001.10");
        a.add("2001V002.10");
        a.add("2002V001.10");
        a.add("2003V001.10");
        a.add("2004V001.10");
        a.add("2004V001.20");
        for (String string : a) {
            System.out.println(string);
        }

}

答案 2 :(得分:1)

只需排序为String

    List<String> strings = Arrays.asList("2002V001.10", "2003V001.10", "2004V001.20", "2001V002.10", "2004V001.10",
            "2001V001.10");

    System.out.println(strings);
    Collections.sort(strings);
    System.out.println(strings);

输出

排序前的

[2002V001.10, 2003V001.10, 2004V001.20, 2001V002.10, 2004V001.10, 2001V001.10]
排序后

[2001V001.10, 2001V002.10, 2002V001.10, 2003V001.10, 2004V001.10, 2004V001.20]