gpt4 book ai didi

Java 使用泛型对集合进行排序

转载 作者:行者123 更新时间:2023-12-01 17:01:24 25 4
gpt4 key购买 nike

我得到一个随机集合,并想使用泛型对其进行排序。作为示例,请参阅下面的代码:

abstract class Foo<T extends Bacon>{
public Foo(Collection<T> bacons){
List sorted = Util.asSortedList(bacons, Util.BACON_COMPARATOR);
}
}

class Util{
public static final Comparator<Bacon> BACON_COMPARATOR = new Comparator<Bacon>() {
@Override
public int compare(final Bacon one, final Bacon two) {
return one.getId().compareTo(two.getId());
}
};

public static <T> List<T> asSortedList(Collection<T> c, Comparator<T> comparator) {
List<T> list = new ArrayList<T>(c);
Collections.sort(list,comparator);
return list;
}
}

请注意,其他类型(非 Bacon)可能会传递到 asSortedList() 中。如何正确修改此场景,以便 Bacon 示例正常工作,并且我仍然可以将其他类型传递给 asSortedList?

上面显示的代码给出了以下错误:

The method asSortedList(Collection<T>, Comparator<T>) in the type Util is not applicable for the arguments (Collection<T>, Comparator<Bacon>)

最佳答案

只需更改 asSortedList

public static <T> List<T> asSortedList(
Collection<T> c, Comparator<? super T> comparator)

...自 TBacon 的子类型,还有你的ComparatorComparator<Bacon> .

关于Java 使用泛型对集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27537787/

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