2016-11-08 1 views
1

j'ai lu d'autres questions ici et constaté que lorsque le compilateur jette un Cannot find symbol pour Collections.sort(List<T> list) le problème le plus souvent soit ...Vous ne trouvez pas Collections.sort malgré Comparable mis en œuvre

  1. Il n'a pas été adopté une List<T>
  2. List<T> n'implémente pas Comparable
  3. importation de java.util.Collection oublié

J'ai fait toutes ces choses donc je soupçonne que ma mise en œuvre est en quelque sorte fausse. Selon this entrée de débordement de pile et la manual ma mise en œuvre devrait être légale, donc je suis à court d'idées. Est-ce que les règles changent si le tri est passé List<Item>?

mise en œuvre Comparable

public abstract class Item implements Comparable<Item> 
    9 { 
...//Fields and constructor omitted 
25  @Override 
26  public int compareTo(Item i) 
27  { 
28 //  String title = this.title; DEBUG FLAG: delete maybe? 
29   return this.title.compareTo(i.title); //Returns a negative value if title < i.title, implements alphabetical order by title 
30  } 

Appel à Library.java (Suppose un TreeMap correctement construit de LinkedList)

public Collection<Item> itemsForKeyword(String keyword) 
25  { 
26   List<Item> list; 
27   if(keywordDbase.get(keyword) == null) //There is no mapping at specified keyword 
28   { 
29    list = null; 
30   } 
31   else if(keywordDbase.get(keyword).isEmpty()) //There is a mapping but it is empty 
32    { 
33     list = null; 
34    } 
35    else //There is a list that has at least one item in it 
36    { 
37     list = keywordDbase.get(keyword); //stores a reference to the LinkedList in list 
38    } 
39 
40   Collections.sort(list); //DEBUG FLAG: Calling sort may be unnecessary 
41 
42   return list; here 
43  } 

d'erreur

library/Library.java:40: error: cannot find symbol 
       Collections.sort(list); 
       ^
+1

Vous devez importer 'java.util.Collections'. – shmosel

+0

Geez duh. Si vous postez une réponse je la marquerai comme acceptée @shmosel –

Répondre

1

java.util.Collection diffère de java.util.Collections. Ajoutez l'instruction import suivante à votre code:

import java.util.Collections;` 

java.util.Collection est

l'interface racine dans la hiérarchie de collecte. Une collection représente un groupe d'objets, appelés ses éléments. Certaines collections permettent des éléments en double et d'autres non. Certains sont commandés et d'autres non ordonnés. Le JDK ne fournit aucune implémentation directe de cette interface: il fournit des implémentations de sous-interfaces plus spécifiques telles que Set et List. Cette interface est généralement utilisée pour transmettre des collections et les manipuler lorsqu'une généralité maximale est souhaitée.

D'autre part, il y a une classe java.util.Collections qui

consiste exclusivement des méthodes statiques qui fonctionnent ou retournent des collections. Il contient des algorithmes polymorphes qui fonctionnent sur des collections, des "wrappers", qui renvoient une nouvelle collection sauvegardée par une collection spécifiée, et quelques autres bricoles.

Ils sont différents mais traitent du même sujet. Vous venez de faire une faute de frappe malheureuse.

0

la déclaration import pour Collections est manquante.

ajouter import java.util.Collections;