如何使用整理器按 属性 排序? (Java)
How can I sort by property using a collator ? (Java)
(我用的是Java)
我想使用整理器按 属性 对对象子列表进行排序,以便按字母顺序排序但忽略重音。问题是我尝试了不同的东西并且 none 工作。
这对子列表进行排序但不忽略重音符号:
newList.subList(0, 5).sort(Comparator.comparing(element -> element.getValue()));
这是我要使用的整理器:
Collator spCollator = Collator.getInstance(new Locale("es", "ES"));
我希望输出是一个按 属性 字母顺序排序的子列表,您可以使用 .getValue() 访问它而忽略重音符号。
Collator 也是一个 Comparator。
如果元素是字符串:
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);
不是使用 Comparator.comparing
,而是创建一个 lambda 来首先提取值,然后使用 collator 进行比较。
Collator spCollator = Collator.getInstance(new Locale("es", "ES"));
newList.subList(0, 5).sort((e1, e2) -> spCollator.compare(e1.getValue(), e2.getValue()));
(我用的是Java)
我想使用整理器按 属性 对对象子列表进行排序,以便按字母顺序排序但忽略重音。问题是我尝试了不同的东西并且 none 工作。
这对子列表进行排序但不忽略重音符号:
newList.subList(0, 5).sort(Comparator.comparing(element -> element.getValue()));
这是我要使用的整理器:
Collator spCollator = Collator.getInstance(new Locale("es", "ES"));
我希望输出是一个按 属性 字母顺序排序的子列表,您可以使用 .getValue() 访问它而忽略重音符号。
Collator 也是一个 Comparator。 如果元素是字符串:
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);
不是使用 Comparator.comparing
,而是创建一个 lambda 来首先提取值,然后使用 collator 进行比较。
Collator spCollator = Collator.getInstance(new Locale("es", "ES"));
newList.subList(0, 5).sort((e1, e2) -> spCollator.compare(e1.getValue(), e2.getValue()));