java主版本号_Java版本号排序

  • Post author:
  • Post category:java


String[] k1 = {“0.10”, “0.2”, “0.1”, “0”, “1.10”, “1.2”, “1.1”, “1”, “2.10”, “2”, “2.2”, “2.1”};

double[] k2 = {0.10, 0.2, 0.1, 0, 1.10, 1.2, 1.1, 1, 2.10, 2, 2.2, 2.1};

Arrays.sort(k1);

Arrays.sort(k2);

System.out.println(Arrays.toString(k1));

System.out.println(Arrays.toString(k2));

输出:

[0, 0.1, 0.10, 0.2, 1, 1.1, 1.10, 1.2, 2, 2.1, 2.10, 2.2]

[0.0, 0.1, 0.1, 0.2, 1.0, 1.1, 1.1, 1.2, 2.0, 2.1, 2.1, 2.2]

我想拥有什么,

[0, 0.1, 0.2, 0.10, 1, 1.1, 1.2, 1.10, 2, 2.1, 2.2, 2.10]

首先在小数之前和之后排序.像1,1.1,1.2,1.10,2,2.1等.

我怎么能为此写一个比较器?

解决方法:

2.1, 2.2, 2.10]

由于2.10按此顺序大于2.2,因此它看起来像版本号排序:

import java.util.Arrays;

import java.util.Comparator;

public class VersionNumberComparator implements Comparator {

@Override

public int compare(String version1, String version2) {

String[] v1 = version1.split(“\\.”);

String[] v2 = version2.split(“\\.”);

int major1 = major(v1);

int major2 = major(v2);

if (major1 == major2) {

return minor(v1).compareTo(minor(v2));

}

return major1 > major2 ? 1 : -1;

}

private int major(String[] version) {

return Integer.parseInt(version[0]);

}

private Integer minor(String[] version) {

return version.length > 1 ? Integer.parseInt(version[1]) : 0;

}

public static void main(String[] args) {

String[] k1 = { “0.10”, “0.2”, “0.1”, “0”, “1.10”, “1.2”, “1.1”, “1”,

“2.10”, “2”, “2.2”, “2.1” };

Arrays.sort(k1, new VersionNumberComparator());

System.out.println(Arrays.asList(k1));

}

}

标签:java,sorting,comparator

来源: https://codeday.me/bug/20190517/1120903.html



版权声明:本文为weixin_30015509原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。