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; } }

 

posted @ 2019-12-12 21:22  啦啦拉扎尔  阅读(587)  评论(0编辑  收藏  举报