Question

Je dois mettre en œuvre une liste chaînée, mais il devrait mettre objet dans la position appropriée. Tout était OK quand je l'utilise en conjonction avec classe spécifique, mais quand j'essayé le rendre universel et l'argument de l'insert de méthode a été objet un problème est apparu. Quand je veux entrée en position droite Objet j'utiliser la méthode CompareTo, mais il n'y a pas la méthode dans la classe d'objets! Le problème est de savoir comment comparer deux éléments d'objet sans connus au sujet de leurs types réels. Peut-être que je devrais utiliser le type de classe générique? Mais qu'en est-CompareTo? Ou peut-être combiner avec classe Element et lieu CompareTo il? Je suppose qu'il est possible. :)

public void insert(Object o)
{
   Element el = new Element(o);
   //  initializing and setting iterators

   while(!it.isDone() && ((it.current().getValue())).CompareTo(o)<0) 
                         // it.current() returns Element of List
   {    
      //move interators
   }
//...
}
Était-ce utile?

La solution

Vous avez deux options:

  • faire la classe de chaque objet et mettre en œuvre java.lang.Comparable écrire la logique de comparaison pour chaque classe là-bas, puis juste accepter Comparable au lieu de Object et appeler compareTo()
  • créer une propriété comparator de votre liste et le mettre sur la construction. Le comparateur béton (mise en œuvre de java.util.Comparator) devrait savoir comment comparer les objets qui sont mis dans ce cas particulier de votre liste.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top