Java排序与MySQL排序不同
我需要检查表中的排序,表格内容由MySQL提供。 我正在使用以下行对列表进行排序:
Collections.sort(sorted, String.CASE_INSENSITIVE_ORDER);
并得到以下结果:
tes3@test.com
test4@test.com
test5@test.com
test@test.com
test_user@mail.com
user-og@driver.com
这是我通过查询从MySQL获得的:
SELECT 'email' FROM 'user' WHERE 1 ORDER BY 'user'.'email' ASC
:
tes3@test.com
test_user@mail.com
test@test.com
test4@test.com
test5@test.com
user-og@driver.com
如您所见,订单不一样。 似乎Java根据ASCII表排序: http : //www.asciitable.com/ 4 (52) - @ (64) - _ (95)
但在MySQL结果中,顺序是_ -> @ -> 4
email
字段排序规则为: utf8_unicode_ci
有什么问题,是否有任何比较器以相同的方式进行排序?
使用[Collator][1]
:
Collator类执行区分区域敏感的String比较。 您可以使用此类为自然语言文本构建搜索和排序例程。
代码将是:
Collator coll = Collator.getInstance(Locale.US); coll.setStrength(Collator.IDENTICAL); Collections.sort(words, coll);
- 线程“main”中的exceptionjavax.xml.bind.PropertyException:name:eclipselink.media-type value:application / json
- Java中的类IOException是否是未经检查的RuntimeException?
- 在Maven中,我的依赖项已经设置,但是当我运行生成的jar时,我得到了一个ClassNotFoundException
- Java:当A扩展A 时,A x = new A()和A x = new B()之间的差异
- 用于圆圈识别的快速Java库
- 如何从cmd运行作为包的一部分的.class文件?
- 有关工厂模式的问题
- 测试线程优先级。 在某些情况下,低优先级线程如何更快?
- 如何关闭Netty库调试输出?