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

  1. List<A> aList = new ArrayList<>();
  2.  
  3. 。。。aList 赋值 。。。
  4.  
  5. Collections.sort(aList , (a1, a2) -> {
  6.  
  7. return compareVer(a1.getversion(),a2.getversion());});
  8.  
  9. map
  1. Collections.sort(mapList , (map1, map2) -> {
  2.  
  3. return compareVer(map1.get("version"),map2.get("version"));});
  1.  
  2. a1在前为升序,a2在前为降序
  3. int compareVer(String ver1, String ver2) {
  4. int num1= version.indexOf("_");
  5. int num2= targetVersion.lastIndexOf("_");
  6. String firstVer= version;
  7. String secVer= targetVersion;
  8. if (num1> 0) {
  9. firstVer= ver1.substring(0, num1);
  10. }
  11. if (num2> 0) {
  12. secVer= ver2.substring(0, num2);
  13. }
  14.  
  15. if (firstVer.equals(secVer)) {
  16. return 0;
  17. }
  18. String[] ver1Arr= firstVer.split("\\.");
  19. String[] ver2Arr= secVer.split("\\.");
  20. int ver1Len= ver1Arr.length;
  21. int ver2Len= ver2Arr.length;
  22. int len= 0;
  23. if (ver1Len> ver2Len) {
  24. len= ver2Len;
  25. } else {
  26. len= ver1Len;
  27. }
  28.  
  29. for (int i = 0; i < len; i++) {
  30. if (ver1Arr[i].equals(ver2Arr[i])) {
  31. continue;
  32. } else {
  33. return Long.parseLong(ver1Arr[i]) > Long.parseLong(ver2Arr[i])?1:-1;
  34. }
  35. }
  36. if (ver1Len!= ver2Len) {
  37. return ver1Len > ver2Len?1:-1;
  38. } else {
  39. return 0;
  40. }
  41. }

list中的对象或者map中的版本号排序 version排序的更多相关文章

  1. JVM中,对象在内存中的布局

    在hotSpot虚拟机中,对象在内存中的布局可以分成对象头.实例数据.对齐填充三部分. 对象头:主要包括: 1.对象自身的运行行元数据,比如哈希码.GC分代年龄.锁状态标志等,这部分长度在32位虚拟机 ...

  2. Struts2把数据封装到集合中之封装到map中

    struts框架封装数据可以封装到集合中也可以封装到map中,该篇博客主要讲解将数据封装到map中. 1. 封装复杂类型的参数(集合类型 Collection .Map接口等) 2. 需求:页面中有可 ...

  3. 【学习笔记】Java中生成对象的5中方法

    概述:本文介绍以下java五种创建对象的方式: 1.用new语句创建对象,这是最常用的创建对象的方式. 2.使用Class类的newInstance方法 3.运用反射手段,调用java.lang.re ...

  4. pandas中DataFrame对象to_csv()方法中的encoding参数

    当使用pd.read_csv()方法读取csv格式文件的时候,常常会因为csv文件中带有中文字符而产生字符编码错误,造成读取文件错误,在这个时候,我们可以尝试将pd.read_csv()函数的enco ...

  5. 数组中存放对象之java中定义类数组存放类

    public class ClassArrayDemo { int age; String name; ClassArrayDemo(int age, String name) { this.age ...

  6. 修改Map中确定key对应的value问题

    今天在码代码的时候出现一个没有预料的问题: 先看下面的代码: public static void main(String[] args) { String[] files=new String[]{ ...

  7. ArcGIS Engine中如何获取Map中已经选择的要素呢

    1.使用IEnumFeturea对象获取map中的FeatureSelection,该方法可以获取所有图层的选择要素.IMap中的FeatureSelection可不是IFeatureSelectio ...

  8. Map接口----Map中嵌套Map

    package cn.good.com; import java.util.HashMap; import java.util.Iterator; import java.util.Map; impo ...

  9. Strut2 ognl取出存放在request,session,application和对象栈的中的值

    1.取出request,session,applicaiton中的值 a.往里面加入request,session,application中加入值 public String testServlet( ...

随机推荐

  1. linux软件下载

    可以到linux官网下载:http://vault.centos.org/6.10/os/Source/SPackages/

  2. 问题 D: 家庭问题

    问题 D: 家庭问题 时间限制: 1 Sec  内存限制: 128 MB[命题人:admin] 题目描述 有n个人,编号为1,2,……n,另外还知道存在K个关系.一个关系的表达为二元组(α,β)形式, ...

  3. 刷题2. Add Two Numbers

    一.题目要求 You are given two non-empty linked lists representing two non-negative integers. The digits a ...

  4. 把jar包部署为linux服务

    一直未配置成功,直到放弃后reboot了下,才直到错的不是自己的配置,而是自己不懂 1.在touch /etc/rc.d/init.d/tl_c_cons_service(创建新文件) 2.vi /e ...

  5. Linux - gitlab的命令

    启动 sudo gitlab-ctl start 关闭 sudo gitlab-ctl stop 重新加载配置文件 sudo gitlab-ctl reconfigure 在本地初始化一个本地仓库 g ...

  6. [2020BUAA软工助教]第1次个人作业

    热身作业(阅读) 一.前言 我认为人生就是一次次地从<存在>到<光明>. 二.软件工程师的成长 博客索引 同学们在上这门课的时候基本都是大三,觉得在大学里,到教室来听课有意思么 ...

  7. 【音乐欣赏】《Happy Together (The Turtles Cover)》 - Unlike Pluto / Why Mona

    曲名:Happy Together 作者:Unlike Pluto.Why Mona [00:11.746] Imagine me and you, I do [00:14.478] I think ...

  8. JDBC 基础用法学习

    JDBC概述 java 数据库链接,sun公司退出的 java 访问数据库的标准规范接口 是一种用于执行SQL语句的 java API 可以作为多种关系数据库提供统一接口 是一组 java 工具类和接 ...

  9. SOCV/POCV 开篇 (1)

    1.功能:模拟工艺偏差对芯片性能的影响 2. 40nm之前 flat derate模型可以基本覆盖大部分情况 3.AOCV (Adance OCV) 考虑distance 和depth的影响. AOC ...

  10. 手机CPU那些事

    原文:https://zhuanlan.zhihu.com/p/19923974 如今人们买手机,都比较关心采用了什么 CPU,因为 CPU 直接决定了这台手机的性能,CPU 之于手机 就好比人的大脑 ...