Java 试图找出排序的区别
我必须验证表中的一列是否正确排序。我获取该列,将其放入Java列表,然后执行Java 试图找出排序的区别,java,excel,sorting,selenium,Java,Excel,Sorting,Selenium,我必须验证表中的一列是否正确排序。我获取该列,将其放入Java列表,然后执行Collections.sort()忽略大小写。Java排序与表列中的排序不同。我注意到表格的排序方式与Microsoft Excel的排序方式相同。我正试图找出差异,以便正确地进行Java排序(可能是本地排序) 我在Windows中的系统属性显示en.us。不管怎样,我对字符进行了双向排序,并在下面向您展示。第一种是标准拉丁语,是Java排序。第二种,我不确定它到底是什么类型,是表排序和Excel排序。有人知道我如何使
Collections.sort()
忽略大小写。Java排序与表列中的排序不同。我注意到表格的排序方式与Microsoft Excel的排序方式相同。我正试图找出差异,以便正确地进行Java排序(可能是本地排序)
我在Windows中的系统属性显示en.us
。不管怎样,我对字符进行了双向排序,并在下面向您展示。第一种是标准拉丁语,是Java排序。第二种,我不确定它到底是什么类型,是表排序和Excel排序。有人知道我如何使Java排序与之匹配吗(一个区别是它使用了ignore case,我也需要这样做)
==Collections.sort()
#$%&'()*+,-。/0 1 2 3 4 5
6 7 8 9 : ; < = > ? @ 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[\]^ 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{|}
==Excel/表格排序
# $ % & ' ( ) * + , - . / 0 1 2 3 4 5
6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | }
' - # $ % & ( ) * , . / : ; ? @ [ \ ]
^ _ ` { | } + < = > 0 1 2 3 4 5 6 7 8
9 A a B b C c D d E e F f G g H h I i
J j K k L l M m N n O o P p Q q R r S
s T t U u V v W w X x Y y Z z
”-#$%&()*,./:;?@[ \ ]
^ _ ` { | } + < = > 0 1 2 3 4 5 6 7 8
9 A A B C D E F G H I
J J K K L M N O P Q R S
s T T U V W X X Y Y Z
来自:
数据分析从排序开始。您可以在一个或多个列中对文本(A到Z或Z到A)、数字(最小到最大或最大到最小)以及日期和时间(最早到最新和最新到最早)进行排序。还可以按创建的自定义列表(如大、中、小)进行排序。也可以按格式排序,包括单元格颜色、字体颜色或图标集。大多数情况下,您将按列排序,但也可以按行排序
排序时,将数据重新排列为某种顺序。相反,过滤时会隐藏无关数据。有关筛选的详细信息,请参见关于筛选
对一系列单元格进行排序时,排序条件不会与工作簿一起保存。如果要保存排序条件,以便下次打开工作簿时重新应用,可以将数据保存为Excel表。在对多个列进行排序或创建复杂的排序条件(创建这些条件需要很长时间)时,请将数据保存在表中
重新应用排序条件时,可能会看到不同的结果。如果公式返回的值已更改,并且重新计算工作表,则可能发生这种情况。如果单元格或表格列的范围中添加、更改或删除了数据,也会发生这种情况
Excel使用以下升序排序数据:0 1 2 3 4 5 6 7 8 9(空格)!“#$%&()*,./:?@[\]^ `{124;}+=>a b c d e f g h i j k l m n o p q r t u w x y z a b c d e f g h i j k l m n o p q r t w x y z假真(表格错误)(空白单元格)
因此排序顺序将与Collections.sort()不同,因为Java更可能根据UTF-8对字符进行排序
不确定Excel使用的是哪种编码,但可以按如下方式更改Collections.sort()的行为:
Collator collector = Collator.getInstance(Locale.US);
collector.setStrength(Collator.PRIMARY);
Collections.sort(list, collector);
javadocs中有很多关于这方面的文档。注意:排序不同的不仅仅是大写/小写字符。当我使用ignore case时,它将字母排序为其他字符,但其他字符则不是。这与字符编码有关。Excel我很确定使用ANSI或其他编码。第一个g组是按每个字符的UTF-8字符代码值排序的。我试过了,但没有成功。它以相同的Java方式排序。我确实编写了一个比较器,我认为可能会成功。你对此有何看法?