Сопоставимый тип Сортировка в векторе int или String - PullRequest
0 голосов
/ 11 мая 2011

В этом я пытаюсь отсортировать intV и stringV с помощью этого метода getSmallestValue. Пробовал разные идеи, но, похоже, не работает. У кого-нибудь есть какие-нибудь блестящие идеи, как реализовать этот метод 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 ]

2 голосов
/ 11 мая 2011

Добро пожаловать в StackOverflow.

Ваша основная проблема в том, что вы пытались превратить Вектор в Целое число, чего вы не можете сделать.

Что может быть более полезным, так это использовать первый элемент вектора.

Я бы предложил вам

  • используйте список вместо вектора.
  • Я бы не стал использовать ручную упаковку
  • определить 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);
0 голосов
/ 11 мая 2011

Используйте Collections.min () . Вы можете проверить источник , если хотите знать, как он реализован.

Vector<Integer> v=new Vector<Integer>();
v.add(22);v.add(33);
System.out.println(Collections.min(v));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...