JAVA排序数字字母混合 JAVA数字和字母混合排序

java\u6570\u5b57\u5b57\u6bcd\u6df7\u5408\u5b57\u7b26\u4e32\u6392\u5e8f

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Sorter {
public static void main(String[] args) {
List strs = new ArrayList();
strs.add("aa2");
strs.add("aa100");
strs.add("aa1");
strs.add("aa10");
strs.add("aa78");
System.out.println(strs);
// \u7528\u4e86\u4e00\u4e2aComparetor
Comparator com = new Comparator() {
public int compare(String o1, String o2) {
// \u524d\u97623\u4e2aIF\u4e3b\u8981\u662f\u5224\u7a7a\u7684
if (o1 == o2) {
return 0;
}
if (o1 == null) {
return 1;
}
if (o2 == null) {
return -1;
}
// \u8fd9\u91cc\u6ca1\u6709\u505a\u592a\u591a\u7684\u5224\u65ad, index \u4ee3\u8868\u7b2c\u51e0\u4e2a\u5f00\u59cb\u662f\u6570\u5b57, \u76f4\u63a5\u4ece\u540e\u9762\u904d\u5386
// \u6bd4\u5982 aa11, \u6211\u4eec\u5c31\u4f1a\u5224\u65ad\u4ece\u4e0b\u6807[2]\u5f00\u59cb\u4e3a\u4e0d\u662f\u6570\u5b57, \u5c31\u76f4\u63a5\u622a\u53d6 [2] \u540e\u9762, \u537311
int index = 0;
for (index = o1.length() - 1; index >= 0
&& (o1.charAt(index) >= '0' && o1.charAt(index) <= '9'); index--)
;
int num1 = Integer.parseInt(o1.substring(index + 1));

for (index = o2.length() - 1; index >= 0
&& (o2.charAt(index) >= '0' && o2.charAt(index) <= '9'); index--)
;
int num2 = Integer.parseInt(o2.substring(index + 1));
return num1 - num2;
}
};
Collections.sort(strs, com);
System.out.println(strs);
}
}

SELECT *
FROM (SELECT TO_CHAR(LEVEL) BUS_NO
FROM DUAL
CONNECT BY LEVEL <= 10
UNION ALL
SELECT 'K' || LEVEL FROM DUAL CONNECT BY LEVEL <= 10)
ORDER BY (CASE
WHEN INSTR(BUS_NO, 'K') 0 THEN
TO_NUMBER(SUBSTR(BUS_NO, 2, LENGTH(BUS_NO) - 1))
ELSE
TO_NUMBER(BUS_NO)
END)
\u4f60\u4e3b\u8981\u770border by \u540e\u8fb9\u7684\u4e1c\u897f\u5c31\u53ef\u4ee5\u4e86,\u4e0d\u9700\u8981java\u6765\u5904\u7406sql\u76f4\u63a5\u53ef\u4ee5\u5904\u7406\u7684

import java.util.ArrayList;
import java.util.List;

public class Sort {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] nums = { "100A", "98.5", "98.5A", "34", "52", "100", "98",
"98.5B" };

// 冒泡排序法排序
for (int i = 0; i < nums.length - 1; i++) {
for (int j = 0; j < nums.length - i - 1; j++) {
double num1;// 前一个数字去字母后的数值
boolean char1 = false; // 前一个数字是否含有字母
int ascii1 = 0;// 前一个数字所含字母的ASCII码
// 获取每个数字的最后一位,判断是否为大写字母(判断其ASCII码是否在65到90之间)
if ((int) (nums[j].toCharArray()[nums[j].length() - 1]) >= 65
&& (int) (nums[j].toCharArray()[nums[j].length() - 1]) <= 90) {
num1 = Double.parseDouble(nums[j].substring(0,
nums[j].length() - 1));
char1 = true;
ascii1 = (int) (nums[j].toCharArray()[nums[j].length() - 1]);
} else {
num1 = Double.parseDouble(nums[j]);
}

double num2;// 后一个数字去字母后的数值
boolean char2 = false; // 后一个数字是否含有字母
int ascii2 = 0;// 后一个数字所含字母的ASCII码
// 获取每个数字的最后一位,判断是否为大写字母(判断其ASCII码是否在65到90之间)
if ((int) (nums[j + 1].toCharArray()[nums[j + 1].length() - 1]) >= 65
&& (int) (nums[j + 1].toCharArray()[nums[j + 1]
.length() - 1]) <= 90) {
num2 = Double.parseDouble(nums[j + 1].substring(0,
nums[j + 1].length() - 1));
char2 = true;
ascii2 = (int) (nums[j + 1].toCharArray()[nums[j + 1]
.length() - 1]);
} else {
num2 = Double.parseDouble(nums[j + 1]);
}

// 从大到小排序
if (num1 < num2) {
String temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
} else if (num1 == num2) {// 数值相等则判断是否有字母以及字母的顺序
// 如果两个都有字母,则判断顺序
if (char1 && char2) {
// 按ASCII码从小到大排列(即从A到Z排列)
if (ascii1 > ascii2) {
String temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
} else if (!char1 && char2) {// 如果后面一个数字有字母
String temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
}

for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
}

 

我为了赋值方便,用的是String数组,但是跟用list没有区别,方法还是一样的,只是获取长度的时候调的方法不同。数组用.length, list用的是.size()。



    //判断是否为数字
    public static boolean isNumber(String str){
        try{
            int number = Integer.parseInt(str);
        }catch(Exception e){
            return false;
        }
        return true;
    }
    
    //如果字符串是数字,就返回本身,如果是混合的,就返回数字的值。
    public static double String2Double(String str){
        if(isNumber(str)){
            return Double.parseDouble(str);
        }else{
            char[] charArr = str.toCharArray();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < charArr.length; i++) {
                if(isNumber(new String(charArr[i] + ""))){
                    sb.append(charArr[i]);
                }else{
                    if((charArr[i]+"").equalsIgnoreCase(".")){
                        sb.append(charArr[i]);
                    }
                    continue;
                }
            }
            
            return Double.parseDouble(sb.toString());
        }
        
    }
    
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("98.5");
        list.add("100A");
        list.add("100");
        list.add("98.5B");
        String[] temp = new String[list.size()];
        for (int i = 0; i < list.size(); i++) {
            temp[i] = list.get(i);
        }
        Arrays.sort(temp);
        
        for (int i = 0; i < temp.length - 1; i++) {
            if(String2Double(temp[i]) == String2Double(temp[i + 1])){
                if(!isNumber(temp[i + 1])){
                    String t = temp[i];
                    temp[i] = temp[i + 1];
                    temp[i + 1] = t;
                }
            }
        }
        
        /*String s1 = "BCA";
        String s2 = "ABC";
        String[] temp = new String[]{s1,s2};
        Arrays.sort(temp);*/
        
        //System.out.println((int)c);
        //System.out.println(String2Double(temp[0]));
    }


  • java瀹炵幇:浠26涓瓧鐩腑浠诲彇5涓瀛楁瘝,鎺掑垪缁勫悎鍑烘墍鏈夌殑鍙兘,鎵撳嵃鍑烘潵_鐧惧害...
    绛旓細package baidu.testTwo;public class Sort { private static char[] NUM = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I','J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V','W', 'X', 'Y', 'Z' };// 鎵鏈夌殑瀛楁瘝...
  • 濡備綍璁java 浜х敓杩炵画鐨瀛楁瘝+鏁板瓧鐨勫瓧绗︿覆 姣斿 绗竴涓瓧绗︿覆鏄疉1 绗...
    绛旓細鍐欎竴涓猣or寰幆锛岄鍏圓灏辨槸鏁板瓧65,杞崲鎴愬瓧绗﹀氨鏄ぇ鍐瀛楁瘝A锛97灏辨槸灏忓啓瀛楁瘝a锛岃繖涔堣鎺ヤ笅鏉ヤ綘搴旇鑷繁浼氫簡 鍛靛懙 瀵瑰簲鐨凚灏辨槸66 浣犳噦鐨
  • java 鏁版嵁涓寘鍚瓧绗︿覆鍜鏁板瓧鏃跺浣鎺掑簭
    绛旓細鎶鏁板瓧杞垚String鍨嬬殑鐒跺悗鎶婂畠浠叏閮芥斁鍏ヤ竴涓猄tring鏁扮粍閲 鐒跺悗璋冪敤Arrays.sort(String[]);杩欐牱灏变細鎶婁綘鐨勮繖涓暟缁勮繘琛鎺掑簭銆傘傘
  • 鎴戞兂鐢Java鍐欎竴涓皬绋嬪簭,闅忔満鐢熸垚10浣嶇殑澶у啓瀛楁瘝鍜鏁板瓧鐨娣峰悎鐮,鍏朵腑...
    绛旓細public class Cl { / 闅忔満 浜х敓 瀛楃涓 param length 瀛楃涓茬殑闀垮害 return / public static String createCode(int length) { Random rd = new Random();String code = "";int iCode = 0;int countNum = 0;for (int i = 0; i < length; i++) { iCode = rd.nextInt(122);if ((...
  • JAVA 灏鏁板瓧骞舵帓鎺掑垪
    绛旓細瀹炵幇鎬濊矾锛氬氨鏄緭鍏ョ殑鏁板瓧涔嬮棿鏈夊浐瀹氱殑瑙勫垯锛屼箣鍚庤鍙栧悗锛屼緷娆¤繘琛屽ぇ灏忔瘮杈冿紝涔嬪悗鐩村埌鎺掑簭缁撴潫锛岃緭鍑虹粨鏋滃嵆鍙細import java.util.Scanner;public class ArrangedNumbers { Integer arryNum[];int count = 0;/* 缁熻鏁板瓧 */ boolean judgeIsNum = true;StringBuffer stringbuffer = new StringBuffer();Sc...
  • Java鎬庝箞鍚屾椂鏄剧ず:鏈変竴鍒椾贡搴忕殑瀛楃a,c,u,b,e,p,f,z鎺掑簭骞舵寜鐓ц嫳鏂瀛楁瘝...
    绛旓細鎴戞兂鍒颁竴涓柟妗堟槸:瀹氫箟abcd...涓涓鏁板瓧鐨勬暟缁,鐒跺悗灏嗕贡搴忕殑瀛楁瘝,寰幆杩涜姣旇緝,杈撳嚭姣忎釜瀛楁瘝鐨勪綅缃,鐒跺悗鍐嶄娇鐢ㄥ啋娉℃潵鎺掑簭
  • 鐢Java鍐欎竴涓▼搴:浣垮叾杈撳嚭浠嶢-Z鐨鎺掑簭瀛楁瘝
    绛旓細import java.util.Scanner;public class Test { public static void main(String[] args) { int count;Scanner scan = new Scanner(System.in);count = scan.nextInt();// max[0]: 璁板綍鍙湁1浣(A ... Z)鏃讹紝count鐨勬渶澶у笺// max[1]锛氳褰曞彧鏈2浣(AA ... ZZ)鏃讹紝count鐨勬渶澶у笺
  • java瀵嗙爜姝e垯琛ㄨ揪寮(鍙互鏄函鏁板瓧,涔熷彲浠ユ槸绾瀛楁瘝,涔熷彲浠ユ槸鏁板瓧+瀛楁瘝,6...
    绛旓細^[0-9a-zA-Z]{6,16} [a-z0-9A-Z]琛ㄧず鏄瀛楁瘝鎴鏁板瓧 {6, 16}琛ㄧず閲嶅鍑虹幇6~16娆 ^琛ㄧず浠庡瓧绗︿覆澶村紑濮嬪尮閰 琛ㄧず鍖归厤鍒板瓧绗︿覆鏈熬 濡傛灉涓嶅姞^鍜$瀛楃涓蹭腑濡傛灉鏈夌鍚堟潯浠剁殑涓蹭篃浼氳鍖归厤
  • Java鍐欑敓鎴愪竴涓敱鏁板瓧鍜屽ぇ灏忓啓瀛楁瘝闅忔満缁勫悎鑰屾垚鐨勫瓧绗︿覆,闀垮害鏄10鍒...
    绛旓細public class Randomcode {private static String baseChars = "qwertyuiopasdfghjklzxcvbnm0123456789";public static String getChar(int len){String chars = "";for(int i=0;i<len;i++){int baseIndex = (int)(Math.random() * baseChars.length()) + 1;chars += baseChars.charAt(base...
  • java 澶у皬鍐瀛楁瘝瀛楃涓鎺掑簭 缁撴灉渚嬪AaBb
    绛旓細import java.util.*;public class CharTest {static Scanner sc=new Scanner(System.in);public static void main(String[] args) {System.out.println("璇疯緭鍏ラ殢鏈瀛楁瘝!");String str=sc.nextLine().replaceAll("[^\\w]+", "").replaceAll("\\d", "");StringBuilder stb=new StringBuilder(...
  • 扩展阅读:java数字大小排序代码 ... java怎么给字母排序 ... java对字母进行排序 ... java三个数字升序排序 ... java 输入数字排序 ... java排序的集合 ... java快速排序代码完整 ... java字符串按字母排序 ... java字母转换为数字 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网