有没有可能用提供的Comparator来实现SortedSet或TreeSet(或者SortedMap或TreeMap)?
ncecgwcz1#
有一个开放的Jackson问题(jackson-databind#2162),允许在对SortedMap进行格式化时指定Comparator。它自2018年10月以来一直开放,但看起来没有做任何工作。
SortedMap
Comparator
hof1towb2#
一种解决方案是创建一个自定义的Converter,它将SortedSet转换为使用所需Comparator排序的SortedSet:
Converter
SortedSet
public static class MyStringSetConverter extends StdConverter<SortedSet<String>, SortedSet<String>> { private static final Comparator<String> COMPARATOR = String.CASE_INSENSITIVE_ORDER .thenComparing(Comparator.naturalOrder()); @Override public SortedSet<String> convert(SortedSet<String> value) { SortedSet<String> sortedSet = new TreeSet<>(COMPARATOR); sortedSet.addAll(value); return sortedSet; } }
public static class MyType { @JsonDeserialize(converter = MyStringSetConverter.class) private SortedSet<String> value; public SortedSet<String> getValue() { return value; } public void setValue(SortedSet<String> value) { this.value = value; } public String toString() { return Objects.toString(value); } }
2条答案
按热度按时间ncecgwcz1#
有一个开放的Jackson问题(jackson-databind#2162),允许在对
SortedMap
进行格式化时指定Comparator
。它自2018年10月以来一直开放,但看起来没有做任何工作。hof1towb2#
一种解决方案是创建一个自定义的
Converter
,它将SortedSet
转换为使用所需Comparator
排序的SortedSet
: