在此我尝试使用此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);
}
}
答案 0 :(得分:2)
欢迎使用StackOverflow。
您的基本问题是您已尝试将Vector转换为您无法执行的整数。
可能更有用的是使用向量的第一个元素。
我建议你
以下两种方法可以实现此方法。
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));