java数字字母混合字符串排序

java中,怎么将aa10 aa11 aa2 aa1排序成aa1 aa2 aa10 aa11?

希望方法有普遍性,适用于aa是任何字母的~
其实是文件地址,要比较好几组
字母很长,一组内字母是一样的
组之间字母不相同,长度也不一样
数字是0-30排序

请大家不用回答了,感谢两位回答的朋友,但只能给一人分数。。我只能比较一下,谢谢

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<String> strs = new ArrayList<String>();
strs.add("aa2");
strs.add("aa100");
strs.add("aa1");
strs.add("aa10");
strs.add("aa78");
System.out.println(strs);
// 用了一个Comparetor
Comparator<String> com = new Comparator<String>() {
public int compare(String o1, String o2) {
// 前面3个IF主要是判空的
if (o1 == o2) {
return 0;
}
if (o1 == null) {
return 1;
}
if (o2 == null) {
return -1;
}
// 这里没有做太多的判断, index 代表第几个开始是数字, 直接从后面遍历
// 比如 aa11, 我们就会判断从下标[2]开始为不是数字, 就直接截取 [2] 后面, 即11
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);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-12-05
import java.util.Arrays;

public class Paixu
{
static String[] strAfter;

static int paixu(String[] str){
String zifu;
int zifuNum;
int[] shuzi;
zifu = (str[0].split("[0-9]",2))[0];
zifuNum = zifu.length();
shuzi = new int[str.length];
strAfter = new String[str.length];
for(int i=0;i<str.length;i++){
shuzi[i] = Integer.valueOf(str[i].substring(zifuNum));
}
Arrays.sort(shuzi);
for(int i=0;i<str.length;i++){
strAfter[i] = zifu + shuzi[i];
System.out.println(strAfter[i]);
}
return str.length;
}
public static void main(String[] args){
String[] str = {"asd123","asf3434","asd12","asd0"};
new Paixu().paixu(str);
}
}

输出:
asd0
asd12
asd123
asd3434
请按任意键继续. . .

说明:
字母长度相同才行...
第2个回答  2009-12-05
格式固定是几个字母+几位数字吗?如果是还好办,怕的是形如这样的:aa10x58ydg92cbi9....

java数字字母混合字符串排序
import java.util.Collections;import java.util.Comparator;import java.util.List;public class Sorter { public static void main(String[] args) { List<String> strs = new ArrayList<String>();strs.add("aa2");strs.add("aa100");strs.add("aa1");strs.add("aa10");strs.add("...

如何让java 产生连续的字母+数字的字符串 比如 第一个字符串是A1 第...
写一个for循环,首先A就是数字65,转换成字符就是大写字母A,97就是小写字母a,这么说接下来你应该自己会了 呵呵 对应的B就是66 你懂的

java随机生成20个长度为12-20的大小写字母混杂的“单词”,按字典顺序...
\/** * * 由小到大排序 * * 从后向前冒泡 * * @param arr *\/public void bubbleSort(String[] arr) {if (arr == null || arr.length == 0)return;for (int i = 0; i < arr.length - 1; i++) {\/\/ 循环之后下标i处为数组中最小的元素for (int j = arr.length - 1...

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对一个字符串重新排列,字母排在前面,数字排在后面,且顺序不变...
public static String sortArray(String str) {StringBuffer letterBuffer = new StringBuffer();StringBuffer numberBuffer = new StringBuffer();for(char c : str.toCharArray()) {if(c >= '0' && c <= '9')numberBuffer.append(c);elseletterBuffer.append(c);}return letterBuffer.toString...

java密码正则表达式(可以是纯数字,也可以是纯字母,也可以是数字+字母,6...
^[0-9a-zA-Z]{6,16} [a-z0-9A-Z]表示是字母或数字 {6, 16}表示重复出现6~16次 ^表示从字符串头开始匹配 表示匹配到字符串末尾 如果不加^和$字符串中如果有符合条件的串也会被匹配

java输入一个字符串,要求将该字符串中出现的英文字母,按照顺序 进行输出...
, lowerCaseArr = lowerCaseList.toArray(new String[0]);\/\/ 对大写字母进行排序 Arrays.sort(upperCaseArr);\/\/ 对小写字母进行排序 Arrays.sort(lowerCaseArr);\/\/ 取出大写字母,拼成字符串 StringBuilder result = new StringBuilder();for (int i = 0; i < upperCaseArr.length; i++) { re...

java字符串通过什么来排序,字符串是怎么比较大小的
答案:java中所有类的排序是根据该类中的toString方法来排序的,你可以通过查看String类的底层代码找到其toString()方法来看他是如何排序的。这是原理 对于单独这个问题:字符串排序时根据字符串第一个字符的按照自然顺序排序 自然顺序:例如如果第一个是数字,则按照从小到大排序,如果第一个字符相同则再...

java按字典顺序重新排列怎么理解?两个不同的英文字母字符串,按照字符串...
第一个字母 比如:abcd和bcde会比较‘a'和’b‘如果第一个字母一样 abcd和acde会比较第二个’b‘和’c‘如果一直一样就一直比下去,直到两个不一样的出现,进行排序 如果长度一样,且对应字符一样,那么这两个字符串就是相等的

java英文字母排序问题,请指教!
\/\/对去掉逗号的字符串进行排序 str=str.replaceAll(",","");char[] cs=str.toCharArray();java.util.Arrays.sort(cs);\/\/将逗号插入到排好序的字符串中 StringBuffer sb=new StringBuffer(new String(cs));for(int i=0; i<pos.length; i++)sb.insert(pos[i],',');\/\/完成输出 String...

相似回答