list中的对象或者map中的版本号排序 version排序

经常会用到版本号排序,直接把他封装成一个工具用起来比较方便。

List<A> aList = new ArrayList<>();

。。。aList 赋值 。。。

Collections.sort(aList , (a1, a2) -> {
                    
return compareVer(a1.getversion(),a2.getversion());});

map中
Collections.sort(mapList , (map1, map2) -> {
                    
return compareVer(map1.get("version"),map2.get("version"));});

a1在前为升序,a2在前为降序
int compareVer(String ver1, String ver2) { int num1= version.indexOf("_"); int num2= targetVersion.lastIndexOf("_"); String firstVer= version; String secVer= targetVersion; if (num1> 0) { firstVer= ver1.substring(0, num1); } if (num2> 0) { secVer= ver2.substring(0, num2); } if (firstVer.equals(secVer)) { return 0; } String[] ver1Arr= firstVer.split("\."); String[] ver2Arr= secVer.split("\."); int ver1Len= ver1Arr.length; int ver2Len= ver2Arr.length; int len= 0; if (ver1Len> ver2Len) { len= ver2Len; } else { len= ver1Len; } for (int i = 0; i < len; i++) { if (ver1Arr[i].equals(ver2Arr[i])) { continue; } else { return Long.parseLong(ver1Arr[i]) > Long.parseLong(ver2Arr[i])?1:-1; } } if (ver1Len!= ver2Len) { return ver1Len > ver2Len?1:-1; } else { return 0; } }
原文地址:https://www.cnblogs.com/lalalazar/p/12031718.html