Treeset le tri par ordre alphabétique
Comment puis-je obtenir le treeset trier par ordre alphabétique?
Et supprimer les doublons.. c'est l'été me rend fou pour une journée. Peut-être que j'ai besoin de dormir un peu..
public static void main(String[] args) {
String fileName = args[0];
String words;
Scanner s = null;
Iterator itr;
try {
s = new Scanner(new BufferedReader(new FileReader(fileName)));
while (s.hasNext()) {
words = s.next();
TreeSet<String> ts = new TreeSet<String>();
ts.add(words);
System.out.println(ts);
}
} catch (FileNotFoundException fnfe) {
System.exit(0);
} finally {
if (s != null) {
s.close();
}
}
}
Vous avez des doublons? Dans un Jeu?
Vous faites une nouvelle TreeSet pour chaque mot...
eh bien, c' est possible - avec un mal conçu
Créer des
Vous faites une nouvelle TreeSet pour chaque mot...
eh bien, c' est possible - avec un mal conçu
hashCode()
ou equals()
- mais je suppose que c'est plus difficile avec la fermeture String
classe 🙂Créer des
TreeSet
pour tous les mots, et ne pas la peine d'appeler Collections.sort
sur elle.OriginalL'auteur A C | 2013-03-19
Vous devez vous connecter pour publier un commentaire.
TreeSet
détient l'ensemble dans une structure arborescente qui est automatiquement triés dans l'ordre naturel. Toute classe qui implémente l'Comparable
interface sera triée. La Chaîne de la classe implémente l'Comparable
interface déjà si vous n'avez pas à faire n'importe quoi pour faire le tri, il suffit de l'ajouter à laTreeSet
.Ensembles ne peuvent pas contenir de doublons si le
hashCode()
etequals()
méthodes sont implémentées comment ils le devraient.EDIT: Le
TreeSet<String> ts = new TreeSet<String>();
est situé dans lewhile()
boucle portée. Vous êtes l'initialisation de chaque boucle et de perdre des données précédente. La déclarer en dehors de la boucle et de ne pas utiliserCollection.sort()
String
,hashCode
etequals
sont déjà mises en œuvre (correctement) pour vous...Assurez-vous de disponibilité de 99,999% des cas, mais il peut arriver encore que les deux différents de la chaîne ont un hash collision (le même hash).
la possibilité de collision de hachage est la raison pour laquelle le
equals
méthode est également nécessaire pour être mis en œuvre, et correctement.Je suis à l'aide d'un fichier texte à importer des mots qui sont "ceci est un test de la fonction d'importation de la fonction". (il y a donc un double mot). Mais si elle a été triées automatiquement, pourquoi le fait-elle apparaître dans la séquence dans le fichier texte et non alphabétique, et la dupe mot n'est pas supprimé? Désolé si c'est une question de noob!
Le
main
programme que vous nous avez fournies ne sont pas imprimer quoi que ce soit. Donnez-nous un exemple de code que vous utilisez réellement et certaines d'entrée d'échantillon sur lequel il échoue.OriginalL'auteur emd