编写一个通用方法来排序任何类型的可比数据集

时间:2018-02-26 04:33:36

标签: java generics collections

我有这样的事情:

0

我还有一堆HashSet集合,这些集合在程序的过程中会慢慢填充,例如:

public class A implements Comparable<A> {
  ...
  @Override
  public int compareTo(A obj) {
     ...
  }
}

public class B implements Comparable<B> {
  ...
  @Override
  public int compareTo(B obj) {
     ...
  }
}

在程序的最后,我想将它们转换为已排序的列表,以便它们可以按顺序显示:

private Collection<A> col = new HashSet<A>();

不幸的是我得到了编译错误:

public class Utils {
  public static <T> Collection<Comparable<T>> toSortedList(Collection<Comparable<T>> col) {
    List<Comparable<T>> sorted = new ArrayList<Comparable<T>>(col);
    Collections.sort(sorted);
    return sorted;
  }
}

我如何修改上述所有HashSets的Comparable&lt; A&gt;和可比较的&lt; B&gt;可以传递给这个方法吗?谢谢!

1 个答案:

答案 0 :(得分:3)

使用<T extends Comparable<? super T>>通用语法:

public class Utils {
    public static <T extends Comparable<? super T>> Collection<T> toSortedList(Collection<T> col) {
        List<T> sorted = new ArrayList<T>(col);
        Collections.sort(sorted);
        return sorted;
    }
}