如何從 CSV 或 Java 中的任何其他文件中刪除重複元素?
已發表: 2021-05-28從文件中查找重複行並不是一個難題。 但有時在面試問題中,人們有時會對他們必須使用的方法感到非常困惑。
在本教程中,我們將介紹如何從 CSV 文件和任何其他文件中刪除重複項的步驟。
讓我們開始吧:
第1步。
創建文件CrunchifyFindDuplicateCSV
.java
第2步。
- 將以下代碼放入文件中。
- 我們正在使用 BufferedReader 來讀取文件。
- 一個一個地向 HashSet 添加行。
- HashSet 類實現了 Set 接口,由一個哈希表(實際上是一個 HashMap 實例)支持。 它不保證集合的迭代順序; 特別是,它不保證訂單會隨著時間的推移保持不變。 此類允許空元素。
- 使用方法 add() 檢查行中是否已經存在於 Set 中。
- 如果指定的元素尚不存在,則將其添加到此集合中。 更正式地說,如果此集合不包含元素 e2,例如 Objects.equals(e, e2),則將指定元素 e 添加到此集合。 如果此集合已包含該元素,則調用將保持集合不變並
returns false
。
- 如果指定的元素尚不存在,則將其添加到此集合中。 更正式地說,如果此集合不包含元素 e2,例如 Objects.equals(e, e2),則將指定元素 e 添加到此集合。 如果此集合已包含該元素,則調用將保持集合不變並
- 一旦跳過,我們將把該行打印為跳過的行。
crunchify.csv 文件
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 |

讓我們在 IntelliJ IDE 中運行 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 |
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 |
希望您發現這個 Java 程序對在 CSV 或任何其他文件中查找重複行很有用。
如何使用 Linux 命令在 CSV 中查找重複行?
1 |
$ sort - u / Users / Shared / crunchify . csv |
結果: