J'essaie de connaître la meilleure façon de trier les lignes file.txt dans une collection Java. L'utilisation de orderedSet supprime la duplication et je ne le souhaite pas.PriorityQueue et ArrayList mieux ensemble?
PriorityQueue effectue le travail mais j'ai besoin que ma classe soit Iterable et que j'utilise PriorityQueue.Iterator ne donne pas de résultats triés. Maintenant, je suis confus avec l'utilisation de Arrays.sort ou d'aller avec cette approche: en utilisant PriorityQueue lors de la lecture des lignes à partir du texte, puis en copiant la file d'attente finale sur un tableau pour utiliser son Iterator?
public class FileSorter implements Iterable<String> {
// this sorted set contains the lines
private PriorityQueue<String> lines0 = new PriorityQueue<>() ;
private ArrayList<String> lines = new ArrayList<>();
public void readFiles (String[] filePaths) throws IOException {
BufferedReader buf = null;
String line ;
for (String path:filePaths) {
//opening the file
buf = new BufferedReader(new FileReader(new File(path)));
//iterating through the lines and adding them the collection
while ((line = buf.readLine()) != null) {
if(line.trim().length() > 0) { //no blank lines
lines0.add(line);
}
}
};
//closing the buffer
buf.close();
while (!lines0.isEmpty()){
lines.add(lines0.poll());
}
}
public Iterator<String> iterator() {
return lines.iterator();
}
}
Merci.
Utilisez [TreeSet] (https://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html) – Oleg
Oleg: TreeSet supprime les doublons !! peut-être mon poste n'était pas assez clair, je veux toujours des duplications –
ok, vérifiez ce lien https://stackoverflow.com/questions/8819550/fr/ordonner-dordre-data-structure-qui-affiche-supports-duplicate-keys – Oleg