可比类型在Vector int或String中排序

时间:2011-05-11 10:26:23

标签: java sorting

在此我尝试使用此getSmallestValue方法对intV和stringV进行排序。尝试了不同的想法,但似乎没有工作。任何人都有任何明智的想法如何实现这个getSmallestValue方法?

public class test {

    public static Comparable getSmallestValue(Vector<Comparable> a) {
        Comparator com = Collections.reverseOrder();
        Collections.sort(a, com);
        return (Comparable) a;
    }

    public static void main(String[] args) {
        Vector<Comparable> intV = new Vector<Comparable>();
        intV.add(new Integer(-1));
        intV.add(new Integer(56));
        intV.add(new Integer(-100));
        int smallestInt = (Integer) getSmallestValue(intV);

        System.out.println(smallestInt);

        Vector<Comparable> stringV = new Vector<Comparable>();
        stringV.add("testing");
        stringV.add("Pti");
        stringV.add("semesterGoes");
        String smallestString = (String) getSmallestValue(stringV);

        System.out.println(smallestString);
    }
}

2 个答案:

答案 0 :(得分:2)

欢迎使用StackOverflow。

您的基本问题是您已尝试将Vector转换为您无法执行的整数。

可能更有用的是使用向量的第一个元素。

我建议你

  • 使用List而不是Vector。
  • 我不会使用手动包装
  • 使用泛型定义getSmallestValue以避免混淆。

以下两种方法可以实现此方法。

public static <N extends Comparable<N>> N getSmallestValue(List<N> a) {
    Collections.sort(a);
    return a.get(0);
}

public static <N extends Comparable<N>> N getSmallestValue2(List<N> a) {
    return Collections.min(a);
}

List<Integer> ints = Arrays.asList(-1, 56, -100);
int min = getSmallestValue(ints);
// or
int min = Collections.min(ints);

答案 1 :(得分:0)

使用Collections.min()。如果您想知道它是如何实现的,可以查看source

Vector<Integer> v=new Vector<Integer>();
v.add(22);v.add(33);
System.out.println(Collections.min(v));