Wie entferne ich doppelte Elemente aus CSV oder einer anderen Datei in Java?
Veröffentlicht: 2021-05-28Das Finden doppelter Zeilen aus einer Datei ist kein großes Problem. Aber manchmal sind die Leute in einer Interviewfrage manchmal sehr verwirrt über die Methode, die sie anwenden müssen.
In diesem Tutorial gehen wir Schritte zum Entfernen von Duplikaten aus einer CSV-Datei und jeder anderen Datei durch.
Lass uns anfangen:
Schritt 1.
Datei CrunchifyFindDuplicateCSV
.java erstellen
Schritt 2.
- Fügen Sie den folgenden Code in die Datei ein.
- Wir verwenden BufferedReader, um Dateien zu lesen.
- Fügen Sie nach und nach Zeilen zu HashSet hinzu.
- Die HashSet-Klasse implementiert die Set-Schnittstelle, unterstützt durch eine Hash-Tabelle (eigentlich eine HashMap-Instanz). Es gibt keine Garantien bezüglich der Iterationsreihenfolge des Satzes; insbesondere garantiert sie nicht, dass die Reihenfolge im Laufe der Zeit konstant bleibt. Diese Klasse lässt das Nullelement zu.
- Verwenden Sie die Methode add(), um zu prüfen, ob die Zeile bereits in Set vorhanden ist oder nicht.
- Fügt das angegebene Element zu dieser Menge hinzu, falls es noch nicht vorhanden ist. Fügt formaler ausgedrückt das angegebene Element e zu dieser Menge hinzu, wenn diese Menge kein Element e2 enthält, sodass Objects.equals(e, e2). Wenn diese Menge das Element bereits enthält, lässt der Aufruf die Menge unverändert und
returns false
.
- Fügt das angegebene Element zu dieser Menge hinzu, falls es noch nicht vorhanden ist. Fügt formaler ausgedrückt das angegebene Element e zu dieser Menge hinzu, wenn diese Menge kein Element e2 enthält, sodass Objects.equals(e, e2). Wenn diese Menge das Element bereits enthält, lässt der Aufruf die Menge unverändert und
- Einmal übersprungen, werden wir diese Zeile als übersprungene Zeile drucken.
crunchify.csv-Datei
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
name city number age kedar kapan 9843875 23 sedai ktm 97798433 23 ayush kalopul 9856324 12 dipal ratopul 9842567 34 malla setiopul 1258496 33 ayush kalopul 9856324 12 babin karki hariyopul 32589 11 raju dhading 58432 44 sedai ktm 97798433 23 Crunchify , LLC PayPal . com Google . com Twitter . com FaceBook . com Crunchify , LLC Google . com Visa . com MasterCard . com Citi . com California Austin California |
CrunchifyFindDuplicateCSV.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
package crunchify . com . tutorial ; import java . io . BufferedReader ; import java . io . FileNotFoundException ; import java . io . FileReader ; import java . io . IOException ; import java . util . HashSet ; /** * @author Crunchify.com * How to Remove Duplicate Elements from CSV file in Java? */ public class CrunchifyFindDuplicateCSV { public static void main ( String [ ] argv ) { String crunchifyCSVFile = "/Users/Shared/crunchify.csv" ; // Reads text from a character-input stream, buffering characters so as to provide for the // efficient reading of characters, arrays, and lines. BufferedReader crunchifyBufferReader = null ; String crunchifyLine = "" ; // This class implements the Set interface, backed by a hash table (actually a HashMap instance). // It makes no guarantees as to the iteration order of the set; in particular, it does not guarantee that the order will // remain constant over time. This class permits the null element. HashSet < String > crunchifyAllLines = new HashSet < > ( ) ; try { crunchifyBufferReader = new BufferedReader ( new FileReader ( crunchifyCSVFile ) ) ; while ( ( crunchifyLine = crunchifyBufferReader . readLine ( ) ) ! = null ) { if ( crunchifyAllLines . add ( crunchifyLine ) ) { crunchifyLog ( "Processed line: " + crunchifyLine ) ; } else if ( ! crunchifyIsNullOrEmpty ( crunchifyLine ) ) { crunchifyLog ( "--------------- Skipped line: " + crunchifyLine ) ; } } } catch ( FileNotFoundException e ) { e . printStackTrace ( ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } finally { if ( crunchifyBufferReader ! = null ) { try { crunchifyBufferReader . close ( ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } } } } // Check if String with spaces is Empty or Null public static boolean crunchifyIsNullOrEmpty ( String crunchifyString ) { if ( crunchifyString ! = null && !crunchifyString.trim().isEmpty()) return false; return true ; } // Simple method for system outs private static void crunchifyLog ( String s ) { System . out . println ( s ) ; } } // Linux command to remove duplicate lines from file: // $ sort -u /Users/Shared/crunchify.csv |

Lassen Sie uns das Java-Programm in der IntelliJ IDE ausführen.
Hier ist ein Ergebnis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Processed line : name city number age Processed line : kedar kapan 9843875 23 Processed line : sedai ktm 97798433 23 Processed line : ayush kalopul 9856324 12 Processed line : dipal ratopul 9842567 34 Processed line : malla setiopul 1258496 33 --------------- Skipped line : ayush kalopul 9856324 12 Processed line : babin karki hariyopul 32589 11 Processed line : raju dhading 58432 44 --------------- Skipped line : sedai ktm 97798433 23 Processed line : Processed line : Crunchify , LLC Processed line : PayPal . com Processed line : Google . com Processed line : Twitter . com Processed line : FaceBook . com --------------- Skipped line : Crunchify , LLC --------------- Skipped line : Google . com Processed line : Visa . com Processed line : MasterCard . com Processed line : Citi . com Processed line : California Processed line : Austin --------------- Skipped line : California Process finished with exit code 0 |
Ich hoffe, Sie finden dieses Java-Programm nützlich, um doppelte Zeilen in CSV- oder anderen Dateien zu finden.
Wie finde ich doppelte Zeilen in CSV mit dem Linux-Befehl?
1 |
$ sort - u / Users / Shared / crunchify . csv |
Ergebnis: