permutación genérica comparación elemento funcional da error del compilador

neo360:

Intenté crear un genérico next_permutation()función que haría lo mismo que el C ++ next_permutation()función. El compilador dice:

tipos de operando malos para el operador binario '>' y '<',

en las siguientes líneas:

  • if (data.get(last) < data.get(last + 1))
  • if (if data.get(i) > data.get(last))

¿Cómo resuelvo esto?

public static <T> boolean findNextPermutation(List<T> data) 
{ 


    if (data.size() <= 1) 
        return false; 

    int last = data.size() - 2; 

    while (last >= 0) { 
        if (data.get(last) < data.get(last + 1)) { 
            break; 
        } 
        last--; 
    } 

    if (last < 0) 
        return false; 

    int nextGreater = data.size() - 1; 

    for (int i = data.size() - 1; i > last; i--) { 
        if (data.get(i) > data.get(last)) { 
            nextGreater = i; 
            break; 
        } 
    } 

    data = swap(data, nextGreater, last); 

    data = reverse(data, last + 1, data.size() - 1); 

    return true; 
} 
Magnilex:

Tpuede ser cualquier cosa. Podría ser de tipo Integero de tipo String. Una Integerpuede ser sacó de la caja a una inty se comparó con <o >, pero una Stringno puede.

Es necesario para reducir lo que Tpuede ser. Una forma sería a la fuerza Ta aplicar Comparable. A continuación, puede hacer uso del compareTo()método:

public static <T extends Comparable<T>> boolean findNextPermutation(List<T> data) {

  if (data.size() <= 1)
    return false;

  int last = data.size() - 2;

  while (last >= 0) {
    if (data.get(last).compareTo(data.get(last + 1)) < 0) {
      break;
    }
    last--;
  }

  if (last < 0)
    return false;

  int nextGreater = data.size() - 1;

  for (int i = data.size() - 1; i > last; i--) {
    if (data.get(i).compareTo(data.get(last)) > 0) {
      nextGreater = i;
      break;
    }
  }

  data = swap(data, nextGreater, last);

  data = reverse(data, last + 1, data.size() - 1);

  return true;
}

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=397054&siteId=1
Recomendado
Clasificación