gpt4 book ai didi

java - 如何使用整理器按属性排序? ( java )

转载 作者:行者123 更新时间:2023-12-02 09:39:39 25 4
gpt4 key购买 nike

(我使用Java)

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

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

newList.subList(0, 5).sort(Comparator.comparing(element -> element.getValue()));

这是我想使用的整理器:

Collator spCollator = Collator.getInstance(new Locale("es", "ES"));

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

最佳答案

Collat​​or 也是一个比较器。如果元素是字符串:

List<String> list = Arrays.asList("abc", "xyz", "bde");
Collator spCollator = Collator.getInstance(new Locale("es", "ES"));
list.sort(spCollator);

如果元素是自定义对象:

List<Element> list = Arrays.asList(new Element("abc"), new Element("xyz"), new Element("bde"), new Element("rew"), new Element("aER"),
new Element("Tre"), new Element("ade"));
list.subList(0, 4).sort(new MyElementComparator());
System.out.println(list);

private static class MyElementComparator implements Comparator<Element>{
Collator spCollator = Collator.getInstance(new Locale("es", "ES"));
public int compare (Element e1, Element e2){
return spCollator.compare(e1.getValue(), e2.getValue());
}
}

或者 lambda 方式:

List<Element> list = Arrays.asList(new Element("abc"), new Element("xyz"), new Element("bde"), new Element("rew"), new Element("aER"),
new Element("Tre"), new Element("ade"));
Collator spCollator = Collator.getInstance(new Locale("es", "ES"));
list.subList(0, 4).sort((e1, e2)-> spCollator.compare(e1.getValue(), e2.getValue()));
System.out.println(list);

关于java - 如何使用整理器按属性排序? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57199918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com