0 0

java高难度排序,字母加数字混合10

现在遇到一个java高难度排序问题,字母加数字混合,
要实现

1.先按字母
2.在按字符长度
3.如果是字母加数字的在按大小

下面list中的数据为如下;
000090
100001
A00001
A00002
A00003
A00004
A00005
A00006
a10
a12
a11
B001
B002
B003
B004
B005
B006
B10
B11
public List sortView() {
List list=computerList();
Collections.sort(list,new ClientIDComparator());
}


public class ClientIDComparator implements Comparator{
  public int compare(Object computer1, Object computer2) {
		String s1 = ((String) computer1).toLowerCase();
		String s2 = ((String) computer2).toLowerCase();
		if (s1.charAt(0) > s2.charAt(0)) {
			return 1;
		} else if (s1.charAt(0) < s2.charAt(0)) {
			return -1;
		} else {
			if(s1.length()==s2.length())
				return s1.compareTo(s2);
			else if(s1.length()>s2.length())
				return 1;
			return 0;
		}
		
 }
}


现在目前还没有实现,求指教
正确排序应该是
000090
100001
a10
a11
a12
A00001
A00002
A00003
A00004
A00005
A00006
B10
B11
B001
B002
B003
B004
B005
B006

问题补充
咱一个人都没回呀,,,,,,,,,,,,,,,,,,,,,,,,
2008年9月03日 20:03

3个答案 按时间排序 按投票排序

0 0

……  你的排序规则貌似和ORACLE的默认规则是一样的诶……  还有必要特别规定么?

你直接order by 你的字段名看看

2008年9月03日 21:18
0 0

lz,看了你的“正确排序应该是 ”,理解下需求,
1.先按字母
2.在按字符长度
3.如果是字母加数字的在按大小
应该是
1.先按首字母
2.在按字符长度
3.如果是字母加数字的在按大小
即第一条要先按首字母吧??
说下我的思路哈,我认为得进行3次排序:
1。第一次根据首字母进行排序,排序输出的是一个首字母递增的序列
2。对第一次排序结果进行二次排序,此时,设立游标,int j代表位置,char tmp代表每个字符串的首字母,分段排序(对首字母相同的字符串排序)

String[] arr=new String[]{"aaa"};
for(int i=0;i<arr.length;i++){
int j=i;
char tmp=arr[i].charAt(0);
while(j+1<arr.length){
j++;
char tmp1=arr[j].charAt(0);
if(tmp!=tmp1){
j--;
break;
}
}
if(j>i){
for(int k=i;k<j;k++){
for(int z=k+1;z<=j;z++){
String temp=arr[k];
String temp1=arr[z];
if(temp.length()>temp1.length()){
arr[k]=temp1;
arr[k+1]=temp;
}
}

}
}
i=j;
}
3。这时满足需求的前2个,然后进行第三遍排序,思路和第二次差不多,多个int len保存长度,即在满足tmp(首字母)相等,len(长度)相等的字符串,按照大小排序。
当然,算法看上去好庞大,只是分享下思路,期待有更好的算法学习下。

2008年9月03日 20:03
0 0

先转换为ascii码,然后排序,不过字母这里要做些处理,A(65),a(97) =。=

2008年9月03日 20:03

相关推荐

    Java 字母数字字符串 混合排序(绝对超值管用)

    List&lt;String&gt; location=new ArrayList(); 一行代码轻松搞定混合排序问题 Collections.sort(location, new SortUtils(true));

    汉字和数字混合排序

    在计算机科学领域,汉字和数字混合排序是一项挑战性任务,特别是在处理中文文本数据时。由于汉字与数字在数据结构和编码上的本质差异,混合排序需要特定的算法和技术来实现。以下将详细介绍汉字和数字混合排序的相关...

    关于中文英文混合排序javaDemo

    在Java编程语言中,处理中文和英文混合的排序问题是一个常见的需求,特别是在处理用户输入、数据库数据或文件名等场景。这个"关于中文英文混合排序javaDemo"的示例主要展示了如何实现这样的功能。让我们深入探讨一下...

    按字母和数字排序的例子

    这通常是一个复杂的问题,因为字母和数字混合的字符串需要考虑字符的自然顺序,而不是简单的ASCII值排序。 首先,我们需要理解字符串排序的原理。在大多数编程语言中,如Python或Java,直接对字符串进行排序会按照...

    java随机生成数字和字母

    3. **混合数字和字母**:可以结合生成数字和字母的方法,随机选择生成数字还是字母。 4. **控制生成长度**:通过修改循环次数,可以灵活地控制生成的字母串长度。 #### 五、总结 通过本篇文章的学习,相信您已经...

    java将数字转换成大写字母

    Java 中实现数字金额到中文大写字符的转换 Java 中实现数字金额到中文大写字符的转换是指将阿拉伯数字转换成中文大写的过程。本文将详细介绍 Java 实现数字金额到中文大写字符的转换的知识点。 知识点一: 数字...

    Java字母加数字组合比较大小

    在Java编程中,比较字母和数字组合的字符串大小是一个常见的需求,特别是在处理用户输入或排序混合类型数据时。本文将详细介绍如何实现此类比较,并提供一个具体的实现示例。 首先,我们要明白,Java中的`String`类...

    java字母数字混搭字符串排序.docx

    根据提供的文档标题“java字母数字混搭字符串排序”及其描述,本文将深入探讨如何在Java中实现对含有字母与数字混合的字符串进行排序的方法。这一技术对于处理包含字母和数字混合的数据集尤其有用,比如在KPI(关键...

    JAVA通过数组按首字母排序

    ### JAVA通过数组按首字母排序 在Java编程语言中,对字符串数组进行排序是一个常见的操作。本篇文章将详细介绍如何利用Java内置的`Arrays.sort()`方法按照字符串的首字母进行排序,以及如何处理大小写敏感性问题。 ...

    Java生成兑换码工具类(英文26个字母加数字随机生成)

    生成指定位数的兑换码,(数字、大写字母随机混排)+(数字、小写字母随机混排)+(小写字母与数字混排),三种方式生成兑换码!

    java 字符串a-z排序

    在Java编程语言中,对字符串中的字符进行a到z排序是一项常见的操作,特别是在处理文本数据或需要对字母顺序排列的场景。本知识点将详细讲解如何实现这个功能。 首先,我们需要理解字符串在Java中的本质。在Java中,...

    随机生成10位数包含字母和数字

    本篇文章将详细解析如何通过Java语言实现一个功能,即随机生成包含字母和数字的10位随机字符串。 #### 核心需求分析 根据题目描述,我们需要实现的功能是生成一个由字母和数字组成的10位随机字符串。这里的字母只...

    Java编程实现中英混合字符串数组按首字母排序的方法

    在Java编程中,有时我们需要对包含中英文的字符串数组进行排序,使得中英混合的字符串按照首字母(中文为拼音首字母)进行有序排列。在Java标准库中,`Arrays.sort(String[])`方法能对字符串数组进行排序,但是默认...

    java识别验证码 仅限字母数字 附带bmp图片

    本话题聚焦于使用Java来识别只包含字母和数字的BMP格式的验证码图片,其中验证码的位置会在图片上随机变动。这涉及到图像处理、模式识别以及机器学习等技术。 首先,我们要理解验证码识别的基本流程。它通常包括...

    java生成20、25.、30长度的字母+数字、大小写+数字、特殊字符+大小写+数字

    java生成20、25.、30长度的字母+数字、大小写+数字、特殊字符+大小写+数字,并自定义大于20/25/30的字符串长度

    java 中 TreeMap排序

    例如,如果键是`Integer`或`String`,它们都实现了`Comparable`接口,那么`TreeMap`会按照数字或字母的字典顺序进行排序。 2. **自定义排序** 当我们需要自定义排序规则时,可以通过传递一个实现了`Comparator`...

    java 字母数字转换程序

    实现数字和字母的转换,类似于手机键盘上的数字和字母。

    java-抽取数组中的数字元素并排序-代码

    #### 三、排序数字 完成数字的提取后,下一步是对这些数字进行排序。为了实现这一点,我们可以将`ArrayList&lt;Integer&gt;`转换为一个`Integer`数组,然后再转换为`int`数组以便于排序: ```java Integer[] ia = list....

    Java实现按中文首字母排序的具体实例

    本文将详细解释如何使用Java实现按中文首字母排序。 首先,Java标准库提供了一个强大的工具类——`java.util.Arrays`,它包含了一系列用于操作数组的方法,其中包括排序功能。`Arrays.sort()`函数就是其中的关键,...

    Java随机字符串生成器,可用于生成随机密码,密约等场景,支持字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置)

    Java随机字符串生成器,可用于生成随机密码,加密算法密约(AES,RSA等)等场景,支持可选字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置),即在选择的字符范围内去实现随机字符串...

Global site tag (gtag.js) - Google Analytics