标签: collator

Java Collat​​or 的数字比较选项

问题:

假设我们有以下字符串列表{"Test1.txt", "Test2.txt", "Test11.txt", "Test22.txt"},使用String::compareToor对它们Collator::compare进行排序将产生以下顺序:

Test1.txt
Test2.txt
Test22.txt
Test3.txt
Run Code Online (Sandbox Code Playgroud)

这很不方便(可以说),而更人性化的结果是:

Test1.txt
Test2.txt
Test3.txt
Test22.txt
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我们可以编写自己的数字敏感的比较方法。但是,如果我们想要数字敏感排序以及使用现有实现Collator(或避免实现)进行国际化的好处,该怎么办?

有没有正确的方法来处理这个问题?或者也许有一个可靠的库可以解决这个问题?

其他语言:

在 Javascript 世界中,Intl.Collator的构造函数接受 a CollatorOption,它允许您设置配置来实现此类功能及更多功能:

const usCollator = Intl.Collator("us", { numeric: true });
const list = ["Test1.txt", "Test2.txt", "Test3.txt", "Test22.txt"];
list.sort(usCollator.compare);
console.log(list);
Run Code Online (Sandbox Code Playgroud)

java string numbers numeric collator

7
推荐指数
1
解决办法
563
查看次数

JS对象的Intl.Collat​​or

我在任何地方都找不到使用collat​​or.compare排序对象的任何示例。有人可以提供吗?到目前为止,我遇到的所有文档和示例都涉及到show array sorting,如下所示:

var myArray = ['1_Document', '11_Document', '2_Document'];        
var collator = new Intl.Collator(undefined, {numeric: true, sensitivity: 'base'});
myArray.sort(collator.compare)
Run Code Online (Sandbox Code Playgroud)

很高兴看到它如何对像

var objs = [{name: '1_Document', size: 40}, {name: '11_Document', size: 50}, {name: '2_Document', size: 60}];
Run Code Online (Sandbox Code Playgroud)

javascript collator

5
推荐指数
1
解决办法
1058
查看次数

如何使用整理器按属性排序?(爪哇)

(我使用Java)

我想使用 Collat​​or 按属性对对象子列表进行排序,以便按字母顺序排序但忽略重音符号。问题是我尝试了不同的方法,但没有任何效果。

这会对子列表进行排序,但不会忽略重音符号:

newList.subList(0, 5).sort(Comparator.comparing(element -> element.getValue()));
Run Code Online (Sandbox Code Playgroud)

这是我想使用的整理器:

Collator spCollator = Collator.getInstance(new Locale("es", "ES"));
Run Code Online (Sandbox Code Playgroud)

我希望输出是一个按属性按字母顺序排序的子列表,您可以使用 .getValue() 访问该属性,忽略重音符号。

java sorting collator

0
推荐指数
1
解决办法
5061
查看次数

标签 统计

collator ×3

java ×2

javascript ×1

numbers ×1

numeric ×1

sorting ×1

string ×1