1. 程式人生 > >java版本號排序

java版本號排序

基於1,1.1,1.1.1,1.2,1.2.1,2,2.1的排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

/**
 * <h1>.</h1><BR/>
 * 
 * @author cyj - 2014-10-26
 */
public class MapComparator implements Comparator<Map<String, Object>> {
	/**
	 * 排序用到的key
	 */
	private String key;

	public MapComparator(String key) {
		this.key = key;
	}

	@Override
	public int compare(Map<String, Object> o1, Map<String, Object> o2) {
		// 獲取比較的字串
		String compareValue1 = (String) o1.get(key);
		String compareValue2 = (String) o2.get(key);
		String[] valueSplit1 = compareValue1.split("[.]");
		String[] valueSplit2 = compareValue2.split("[.]");
		int minLength = valueSplit1.length;
		if (minLength > valueSplit2.length) {
			minLength = valueSplit2.length;
		}
		for (int i = 0; i < minLength; i++) {
			int value1 = Integer.parseInt(valueSplit1[i]);
			int value2 = Integer.parseInt(valueSplit2[i]);
			if(value1 > value2){
				return 1;
			}else if(value1 < value2){
				return -1;
			}
		}
		return valueSplit1.length - valueSplit2.length;
	}

	public static void main(String[] args) {
		List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
		Random random = new Random();
		for(int i = 0;i<10;i++){
			Map<String,Object> map = new HashMap<String, Object>();
			int lenght = random.nextInt(5) + 2;
			String compareKey = null;
			for(int j = 0 ;j<lenght;j++){
				if(compareKey == null){
					compareKey = "" + random.nextInt(3);
				}else{
					compareKey += "." + random.nextInt(3);
				}
			}
			map.put("compareKey", compareKey);
			list.add(map);
		}
		System.out.println("排序之前");
		printMap(list);
		Collections.sort(list, new MapComparator("compareKey"));
		System.out.println("\n排序之後");
		printMap(list);
	}
	public  static void printMap(List<Map<String,Object>> list){
		for(int i=0;i<list.size();i++){
			System.out.println(list.get(i).get("compareKey") );
		}
	}

}

程式執行結果:

排序之前
2.1.0
1.0.0.1.1
1.0.2
0.1.1
0.0.2
1.2.0
1.1.1.2.0.2
2.2.2.2.2.1
1.2
2.1.2


排序之後
0.0.2
0.1.1
1.0.0.1.1
1.0.2
1.1.1.2.0.2
1.2
1.2.0
2.1.0
2.1.2
2.2.2.2.2.1


相關推薦

java版本排序

基於1,1.1,1.1.1,1.2,1.2.1,2,2.1的排序 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util

演算法練習06 版本排序

題目(2018-11-21) 有一個專案,由於多人維護,導致版本號規則,例如: const version = ['1.45.0', '1.5', '6', '3.3.3.3.3'] 現在需要對版本號進行從小到大排序,注意: 1.45.0是大於1.5的 實現 直接用

Java 版本比較

字串切割判斷 /** * 字串切割比較 * @param v1 * @param v2 * @return 1 V1 >= V2 2 V1 &

JAVA 獲取java版本

JAVA 獲取系統配置資訊重點內容 System.out.println(“java版本號:” + System.getProperty(“java.version”)); // java版本號 System.out.println(“Jav

版本對比方案及參考代碼(Objective-C,Java,JavaScript)

true eap bstr math 當前 function loop sse 版本號 常用版本號 如 2.0.1 與 2.0.2 相比 2.0.2是比2.0.1要新的 那麽該如何對這個版本號進行對比 這裏有一個比較簡單的實現方案 2.0.1 這種格式可以拆分為多個部分

Java發展的時間表。 (版本 名稱 中文名 發布日期)

時間日期 jtable beta 編譯 5.0 企業版 evel 簡化 正版 JDK 1.1.4 Sparkler 寶石 1997-09-12  JDK 1.1.5 Pumpkin 南瓜 1997-12-13  JDK 1.1.6 Abigail 阿比蓋爾--女子名 199

微信企業回調模式配置解說 Java Servlet+Struts2版本 echostr校驗失敗解決

del com crypt atp org use ase http err 微信企業號回調模式配置解說 Java Servlet+Struts2版本號

安裝多個版本jdk後java -version不改變的問題解決

art 顯示 pad setting shee css clip ssi -s 1、問題 比方先安裝了jdk7後,再安裝jdk6,java -version就是顯示

java比較客戶端版本

integer 大於 index 代碼 服務器端 ray com 為什麽不能 java 參考文章:http://www.jb51.net/article/70317.htm 關鍵點 為什麽不能使用String.compareTo方法來比較客戶端版本號?

java 判斷是否大於指定版本

ger class oop eat public result val split util public boolean is_version_great_than(String version) { boolean result = false

使用java實現快速排序(我認為是最簡單最容易理解的版本

一切都在程式碼和註釋之中。複製貼上就能跑,邊跑邊看才是最愉快的。 所以,話不多說,放碼過來。   public class QuickSort { public static void main(String[] args) { int x[]={6,1,2,7,9,1

java專案打包加版本清理快取二

一篇我們主要介紹了在程式碼中怎麼處理可以做到清理快取的效果,這篇我們說說在打包的時候加版本號,意義上就是給靜態資源加版本號,意思我們每次打包的靜態頁面都是一個全新的頁面,通過這種方式來達到清理快取的目的;為達目標不擇手段嗎! 1.maven專案打包增加版本號,利用maven外掛:com.goo

java使用apk-parser解析apk,獲取manifest中的版本及自定義變數

apk-parser地址: https://github.com/hsiafan/apk-parser 1.獲取版本號等資訊: try (ApkFile apkFile = new ApkFile(new File(filePath))) { ApkMeta apkMeta

Java - Class版本和UnsupportedClassVersionError

問題分析 Java是向下相容的,每一個jdk版本都有對應的class版本號(major + minor version numbers);如果用低版本的jvm去載入高版本jdk編譯的類,就會報錯:java.lang.UnsupportedClassVersionError 原始碼中關於這個Unsuppor

Java實現比較APP版本大小

實現程式碼如下: /** * 比較APP版本號的大小 * <p> * 1、前者大則返回一個正數 * 2、後者大返回一個負數 * 3、相等則返回0 * * @param version1 app

如何在Linux查詢Nginx, Tomcat, Apache, PHP, Java版本

1、查詢Nginx版本號: # cd /usr/local/nginx/sbin # ./nginx -v nginx version: nginx/1.11.3 2、查詢Tomcat版本號: # cd /home/server/tomcat-dfs/bin # ./version.sh Using

檢視java class檔案的編譯版本

用maven做專案依賴管理,依賴了一個其他組開發的一個基礎包。結果,在使用maven進行編譯打包的時候,報了錯: Unsupported major.minor version 51.0。 注:我本機上目前只安裝了 jdk 1.8 使用Eclispse自帶的

微信公眾支付java版本

回撥函式 @RequestMapping("/toPay") public String toPay(HttpServletRequest request, HttpServletResponse response, Model model){ System.out.print

Java class檔案的JDK編譯版本

  比如用UltraEdit(UE)開啟class檔案(如果是在linux,比如Ubuntu下,用$hexdump -C Test.class),你會看到諸如第一行是: 00000000h: CA FE BA BE00 00 32 00 A9 07 00 02 01 00 前四個位元組為固定的 CA FE B

史上最詳細的氣泡排序演算法解析( 程式碼Java版本

1.問題引入:什麼是氣泡排序?(1)官方解讀:氣泡排序(Bubble Sort),是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來