JAVA排序数字字母混合 JAVA数字和字母混合排序
java\u6570\u5b57\u5b57\u6bcd\u6df7\u5408\u5b57\u7b26\u4e32\u6392\u5e8fimport 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]));
}
绛旓細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' };// 鎵鏈夌殑瀛楁瘝...
绛旓細鍐欎竴涓猣or寰幆锛岄鍏圓灏辨槸鏁板瓧65,杞崲鎴愬瓧绗﹀氨鏄ぇ鍐瀛楁瘝A锛97灏辨槸灏忓啓瀛楁瘝a锛岃繖涔堣鎺ヤ笅鏉ヤ綘搴旇鑷繁浼氫簡 鍛靛懙 瀵瑰簲鐨凚灏辨槸66 浣犳噦鐨
绛旓細鎶鏁板瓧杞垚String鍨嬬殑鐒跺悗鎶婂畠浠叏閮芥斁鍏ヤ竴涓猄tring鏁扮粍閲 鐒跺悗璋冪敤Arrays.sort(String[]);杩欐牱灏变細鎶婁綘鐨勮繖涓暟缁勮繘琛鎺掑簭銆傘傘
绛旓細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 ((...
绛旓細瀹炵幇鎬濊矾锛氬氨鏄緭鍏ョ殑鏁板瓧涔嬮棿鏈夊浐瀹氱殑瑙勫垯锛屼箣鍚庤鍙栧悗锛屼緷娆¤繘琛屽ぇ灏忔瘮杈冿紝涔嬪悗鐩村埌鎺掑簭缁撴潫锛岃緭鍑虹粨鏋滃嵆鍙細import java.util.Scanner;public class ArrangedNumbers { Integer arryNum[];int count = 0;/* 缁熻鏁板瓧 */ boolean judgeIsNum = true;StringBuffer stringbuffer = new StringBuffer();Sc...
绛旓細鎴戞兂鍒颁竴涓柟妗堟槸:瀹氫箟abcd...涓涓鏁板瓧鐨勬暟缁,鐒跺悗灏嗕贡搴忕殑瀛楁瘝,寰幆杩涜姣旇緝,杈撳嚭姣忎釜瀛楁瘝鐨勪綅缃,鐒跺悗鍐嶄娇鐢ㄥ啋娉℃潵鎺掑簭
绛旓細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鐨勬渶澶у笺
绛旓細^[0-9a-zA-Z]{6,16} [a-z0-9A-Z]琛ㄧず鏄瀛楁瘝鎴鏁板瓧 {6, 16}琛ㄧず閲嶅鍑虹幇6~16娆 ^琛ㄧず浠庡瓧绗︿覆澶村紑濮嬪尮閰 琛ㄧず鍖归厤鍒板瓧绗︿覆鏈熬 濡傛灉涓嶅姞^鍜$瀛楃涓蹭腑濡傛灉鏈夌鍚堟潯浠剁殑涓蹭篃浼氳鍖归厤
绛旓細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...
绛旓細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(...