JAVA按着字典顺序排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA按着字典顺序排序相关的知识,希望对你有一定的参考价值。
求答案,数组〖“red”,“yellow”,“Black”,“Green”〗,进行排序,要求首字母按着字典顺序,不区分大小写,谢谢帮忙了,求答案,感激不尽
package com.play;public class Decimal2Binary
public static void main(String[] args)
String [] strArray = new String[]"red","yellow","Black","Green";
String t = null;
System.out.println("排序前");
for(String s : strArray)
System.out.print(s+"\t");
int i,j,k;
for(i=0;i<strArray.length-1; i++)
k=i;
for(j=i+1;j<strArray.length;j++)
Character c1 = Character.valueOf(strArray[j].charAt(0));
Character c2 = Character.valueOf(strArray[k].charAt(0));
if(c1.compareTo(c2)<0)
k=j;
if(i!=k)
t=strArray[i];
strArray[i]=strArray[k];
strArray[k]=t;
System.out.println("\n排序后:");
for(String s : strArray)
System.out.print(s+"\t");
参考技术A 如果同时有 new String[] "ye", "yel", "yellow" ;你的排序是ye,yel,yellow
但是如果new String[] "yel", "ye", "yellow" ;排序就变成 排序后:yel ye yellow 参考技术B sortStr = new String[]"red","yellow","Black","Green";
Arrays.sort(sortStr );
System.out.println(Arrays.asList(sortStr )); 参考技术C 。。。??? 参考技术D 有好几个方法呢 map
Java Unicode 字符串排序
【中文标题】Java Unicode 字符串排序【英文标题】:Java Unicode strings sorting 【发布时间】:2011-07-22 22:14:06 【问题描述】:在 Java 中,如何比较 Unicode 字符串?
我的意思是,如果我有几个说日文字符串,当我执行以下操作时:
java.util.Arrays.sort(arrayOfJapaneseStrings);
这些字符串是如何比较和排序的?
【问题讨论】:
【参考方案1】:默认情况下,字符串按 Unicode 顺序按字典顺序排序。顺序是 UTF-16,所以某些字符可能不是你想要的,但是日文字符都在 BMP 中,所以你不应该对这些有问题。
如果您想要不同的排序顺序,可以使用java.text.Collator
类来定义不同的排序顺序。
【讨论】:
所以“Unicode 顺序”基本上是“升序 Unicode 代码点”? @ryanprayogo:是的。具体来说,它是升序的 Java 字符值,由于 UTF-16,它大多与 Unicode 码点一一对应。 U+10000 以上的字符除外,它们在表示中使用代理字符。 “Unicode 顺序”遵循Unicode Collation Algorithm。你在谈论一些不同的东西。请不要谈论 UTF-16;这是一个巨大的尴尬和后宫的痛苦。尝试在 Java 中正确处理 Unicode 是一种折磨。 谢谢,@tchrist。你是对的,我不是说“Unicode 顺序”。我不知道该怎么称呼它,因为“代码点顺序”也会产生误导。也许只是“字符数值的顺序”。 顺便说一句,我没有对 UTF-16 做出判断 :-)。尽管我确实对 Java 将实用版本的 Unicode 带入该语言给予了很多赞誉,但当大多数语言仍然很难使用基本的 Unicode 时。即使在今天,Java 也使得处理大多数文本变得非常简单,但对于特殊用途,您确实需要知道自己在做什么。我还没有遇到与 Java 中的 UTF-16 相关的错误。【参考方案2】:默认情况下,它采用 UTF-16 字节码比较。这是最快的方法,因此如果您只需要 some 顺序(例如,如果您稍后要使用二进制搜索,则需要它们按顺序排列,但只是“按顺序排列” " 表示无所谓,越快越好)。
如果您需要在给定语言环境中对用户有意义的排序,请使用 java.text.Collator 类。
【讨论】:
j.t.Collator 类不符合Unicode Collation Algorithm。使用真实的东西。 @tchrist 现在是否有对 UCA 的良好支持,有很多支持的语言环境?上次我实际使用 Java 时,UCA 是相当新的,所以我知道从那以后发生了很多变化(为什么我很少回答 Java 问题,只是那些我知道我可以说一些有意义的问题)。 Jon,JDK Collator 类仍然不实现 UCA,但 ICU’s 实现了。我发现 UCA 通常正是我想要的,甚至没有任何特殊的语言环境,但如果您愿意,ICU 也将 CLDR 数据用于其语言环境业务。我现在将 UCA 用于我所有的文本排序,并且它产生了很大的不同。 @tchrist,前段时间我用过一些 ICU 的 C++ 东西,发现它确实非常好。【参考方案3】:根据compareTo
String类的方法。见javadoc:
比较两个字符串 按字典顺序。比较基于中每个字符的 Unicode 值 字符串。这个代表的字符序列
String
对象按字典顺序与 由参数字符串表示的字符序列。结果是 如果此String
对象,则为负整数 按字典顺序在参数字符串之前。结果是一个 如果此String
对象,则为正整数 按字典顺序 跟随参数字符串。如果字符串结果为零 是平等的;compareTo
返回0
确切时间 @link #equals(Object) 方法将返回true
。
【讨论】:
这看起来像是 UCS-2 旧时代的古话。以上是关于JAVA按着字典顺序排序的主要内容,如果未能解决你的问题,请参考以下文章
java 给定一个字符串数组。按照字典顺序进行从小到大的排序。