赞
踩
可以根据服务器各种版本比较
支持不同位数的比较 2.0.0.0.0.1 2.0 对比
“3.0”, “3”
“3.0.0.1”, “3.0”
“3.0.0”, “3.0”
- /**
- * 如果版本1 大于 版本2 返回true 否则返回fasle 支持 2.2 2.2.1 比较
- * 支持不同位数的比较 2.0.0.0.0.1 2.0 对比
- *
- * @param v1 版本服务器版本 " 1.1.2 "
- * @param v2 版本 当前版本 " 1.2.1 "
- * @return ture :需要更新 false : 不需要更新
- */
- public static boolean compareVersions(String v1, String v2) {
- //判断是否为空数据
- if (TextUtils.equals(v1, "") || TextUtils.equals(v2, "")) {
- return false;
- }
- String[] str1 = v1.split("\\.");
- String[] str2 = v2.split("\\.");
-
- if (str1.length == str2.length) {
- for (int i = 0; i < str1.length; i++) {
- if (Integer.parseInt(str1[i]) > Integer.parseInt(str2[i])) {
- return true;
- } else if (Integer.parseInt(str1[i]) < Integer.parseInt(str2[i])) {
- return false;
- } else if (Integer.parseInt(str1[i]) == Integer.parseInt(str2[i])) {
-
- }
- }
- } else {
- if (str1.length > str2.length) {
- for (int i = 0; i < str2.length; i++) {
- if (Integer.parseInt(str1[i]) > Integer.parseInt(str2[i])) {
- return true;
- } else if (Integer.parseInt(str1[i]) < Integer.parseInt(str2[i])) {
- return false;
-
- } else if (Integer.parseInt(str1[i]) == Integer.parseInt(str2[i])) {
- if (str2.length == 1) {
- continue;
- }
- if (i == str2.length - 1) {
-
- for (int j = i; j < str1.length; j++) {
- if (Integer.parseInt(str1[j]) != 0) {
- return true;
- }
- if (j == str1.length - 1) {
- return false;
- }
-
- }
- return true;
- }
- }
- }
- } else {
- for (int i = 0; i < str1.length; i++) {
- if (Integer.parseInt(str1[i]) > Integer.parseInt(str2[i])) {
- return true;
- } else if (Integer.parseInt(str1[i]) < Integer.parseInt(str2[i])) {
- return false;
-
- } else if (Integer.parseInt(str1[i]) == Integer.parseInt(str2[i])) {
- if (str1.length == 1) {
- continue;
- }
- if (i == str1.length - 1) {
- return false;
-
- }
- }
-
- }
- }
- }
- return false;
- }
测试方法
- public static void main(String[] args) {
-
- System.out.println(compareVersions("3.0.0.0.0.1.0.1", "3.0.0.0.0.1"));
- System.out.println(compareVersions("3.0.0.0.0.0.1.0", "3.0.0.0.0") + "\n\n\n\n");
-
- System.out.println(compareVersions("3.0", "3"));
- System.out.println(compareVersions("3.0.0.1", "3.0"));
- System.out.println(compareVersions("3", "3.0") + "\n\n\n\n");
-
- System.out.println(compareVersions("3.1.1", "3.1"));
- System.out.println(compareVersions("3.1.1", "3.1.1.1"));
- System.out.println(compareVersions("3.1", "3.1.0") + "\n\n\n\n");
-
- System.out.println(compareVersions("1.1.1", "2.0.0"));
- System.out.println(compareVersions("3.2", "3.3.2") + "\n\n\n\n");
-
- System.out.println(compareVersions("1.1", "2.0.0"));
- System.out.println(compareVersions("1.1.1", "2.0"));
- }
下面是我自己的需求,根据编号来进行一个排序,
想法是通过比较编号的大小,然后在VO对象里面重写Collections方法针对对象里面的编号字段进行排序
Collections.sort(List, new TaskTemporaryVO.TaskTemporaryVOAsc())
- // 排序
- public static class TaskTemporaryVOAsc implements Comparator<TaskTemporaryVO> {
- @Override
- public int compare(TaskTemporaryVO o2, TaskTemporaryVO o1) {
- if (o1 == null) {
- if (o2 == null) {
- return 0;
- } else {
- return -1;
- }
- } else {
- if (o2 == null) {
- return 1;
- } else {
- if (o1.getCode() == null) {
- if (o2.getCode() == null) {
- return 0;
- } else {
- return 1;
- }
- } else {
- if (o2.getCode() == null) {
- return -1;
- } else {
-
- if (compareVersions(o2.getCode(), o1.getCode())) {
- return 1;
- } else {
- return -1;
- }
- }
- }
- }
- }
- }
- }
小白操作,应该还有问题,正在继续修改中。
仅供个人学习用,侵删
转载:https://blog.csdn.net/MrGraffiti/article/details/50983180
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。