当前位置:   article > 正文

版本号对比 比较大小 (版本比较)_版本号判断大小

版本号判断大小

可以根据服务器各种版本比较
支持不同位数的比较 2.0.0.0.0.1 2.0 对比
“3.0”, “3”
“3.0.0.1”, “3.0”
“3.0.0”, “3.0”

  1. /**
  2. * 如果版本1 大于 版本2 返回true 否则返回fasle 支持 2.2 2.2.1 比较
  3. * 支持不同位数的比较 2.0.0.0.0.1 2.0 对比
  4. *
  5. * @param v1 版本服务器版本 " 1.1.2 "
  6. * @param v2 版本 当前版本 " 1.2.1 "
  7. * @return ture :需要更新 false : 不需要更新
  8. */
  9. public static boolean compareVersions(String v1, String v2) {
  10. //判断是否为空数据
  11. if (TextUtils.equals(v1, "") || TextUtils.equals(v2, "")) {
  12. return false;
  13. }
  14. String[] str1 = v1.split("\\.");
  15. String[] str2 = v2.split("\\.");
  16. if (str1.length == str2.length) {
  17. for (int i = 0; i < str1.length; i++) {
  18. if (Integer.parseInt(str1[i]) > Integer.parseInt(str2[i])) {
  19. return true;
  20. } else if (Integer.parseInt(str1[i]) < Integer.parseInt(str2[i])) {
  21. return false;
  22. } else if (Integer.parseInt(str1[i]) == Integer.parseInt(str2[i])) {
  23. }
  24. }
  25. } else {
  26. if (str1.length > str2.length) {
  27. for (int i = 0; i < str2.length; i++) {
  28. if (Integer.parseInt(str1[i]) > Integer.parseInt(str2[i])) {
  29. return true;
  30. } else if (Integer.parseInt(str1[i]) < Integer.parseInt(str2[i])) {
  31. return false;
  32. } else if (Integer.parseInt(str1[i]) == Integer.parseInt(str2[i])) {
  33. if (str2.length == 1) {
  34. continue;
  35. }
  36. if (i == str2.length - 1) {
  37. for (int j = i; j < str1.length; j++) {
  38. if (Integer.parseInt(str1[j]) != 0) {
  39. return true;
  40. }
  41. if (j == str1.length - 1) {
  42. return false;
  43. }
  44. }
  45. return true;
  46. }
  47. }
  48. }
  49. } else {
  50. for (int i = 0; i < str1.length; i++) {
  51. if (Integer.parseInt(str1[i]) > Integer.parseInt(str2[i])) {
  52. return true;
  53. } else if (Integer.parseInt(str1[i]) < Integer.parseInt(str2[i])) {
  54. return false;
  55. } else if (Integer.parseInt(str1[i]) == Integer.parseInt(str2[i])) {
  56. if (str1.length == 1) {
  57. continue;
  58. }
  59. if (i == str1.length - 1) {
  60. return false;
  61. }
  62. }
  63. }
  64. }
  65. }
  66. return false;
  67. }

测试方法

  1. public static void main(String[] args) {
  2. System.out.println(compareVersions("3.0.0.0.0.1.0.1", "3.0.0.0.0.1"));
  3. System.out.println(compareVersions("3.0.0.0.0.0.1.0", "3.0.0.0.0") + "\n\n\n\n");
  4. System.out.println(compareVersions("3.0", "3"));
  5. System.out.println(compareVersions("3.0.0.1", "3.0"));
  6. System.out.println(compareVersions("3", "3.0") + "\n\n\n\n");
  7. System.out.println(compareVersions("3.1.1", "3.1"));
  8. System.out.println(compareVersions("3.1.1", "3.1.1.1"));
  9. System.out.println(compareVersions("3.1", "3.1.0") + "\n\n\n\n");
  10. System.out.println(compareVersions("1.1.1", "2.0.0"));
  11. System.out.println(compareVersions("3.2", "3.3.2") + "\n\n\n\n");
  12. System.out.println(compareVersions("1.1", "2.0.0"));
  13. System.out.println(compareVersions("1.1.1", "2.0"));
  14. }

下面是我自己的需求,根据编号来进行一个排序,

想法是通过比较编号的大小,然后在VO对象里面重写Collections方法针对对象里面的编号字段进行排序

Collections.sort(List, new TaskTemporaryVO.TaskTemporaryVOAsc())

  1. // 排序
  2. public static class TaskTemporaryVOAsc implements Comparator<TaskTemporaryVO> {
  3. @Override
  4. public int compare(TaskTemporaryVO o2, TaskTemporaryVO o1) {
  5. if (o1 == null) {
  6. if (o2 == null) {
  7. return 0;
  8. } else {
  9. return -1;
  10. }
  11. } else {
  12. if (o2 == null) {
  13. return 1;
  14. } else {
  15. if (o1.getCode() == null) {
  16. if (o2.getCode() == null) {
  17. return 0;
  18. } else {
  19. return 1;
  20. }
  21. } else {
  22. if (o2.getCode() == null) {
  23. return -1;
  24. } else {
  25. if (compareVersions(o2.getCode(), o1.getCode())) {
  26. return 1;
  27. } else {
  28. return -1;
  29. }
  30. }
  31. }
  32. }
  33. }
  34. }
  35. }

小白操作,应该还有问题,正在继续修改中。

仅供个人学习用,侵删

转载:https://blog.csdn.net/MrGraffiti/article/details/50983180

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/312428
推荐阅读
相关标签
  

闽ICP备14008679号