首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地图可以使用java.text.Collator吗?

地图可以使用java.text.Collator吗?
EN

Stack Overflow用户
提问于 2011-08-01 15:26:21
回答 2查看 1.3K关注 0票数 2

我正在使用SQL Server2008 R2。

我有一个从数据库检索的数据缓存,目前获取字符串的方法是通过map.get()。然而,代码的某些部分直接从数据库查询,而不是仅仅使用缓存,因为这些情况需要一些连接。现在的问题是,表上的collation在通过SQL比较(使用表排序规则)进行文本比较和通过Java使用map.get()进行文本比较之间造成了不同的行为。

我读过关于java.text.Collator的文章,但它需要使用collator.Compare才能正确使用它。有没有办法强制地图使用固定的Collator

顺便说一句,这种情况下的排序规则是使用日语字符,而在SQL Server中,半角日语和全角日语是相同的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-01 15:55:17

您可以使用具有为您的案例正确配置的排序器的TreeMap。下面是一个示例,其中大写和小写拉丁字符被认为是等效的:

代码语言:javascript
复制
Collator collator = Collator.getInstance(Locale.FRENCH);
collator.setStrength(Collator.PRIMARY);

Map<String, String> map = new TreeMap<String, String>(collator);

map.put("ABC", "foo");

System.out.println(map.get("abc"));
票数 5
EN

Stack Overflow用户

发布于 2011-08-01 15:55:37

您可以使用Japanese Locale启动Collator,如下所示:

代码语言:javascript
复制
Collator collator = Collator.getInstance( Locale.JAPANESE );

然后,您可以像这样比较字符串:

代码语言:javascript
复制
int comparison = collator.compare( strOne, strTwo );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6895344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档