2017-08-04 17 views
0

値に基づいて特定の行レコードを読み取る方法はありますか?たとえば、私のCSVファイルは:csvで特定の行を読む

ProductID,ProductName,price,availability,type 
12345,Anaox,300,yes,medicine 
23456,Chekmeter,400,yes,testing 

ProductIDが '23456'の行を取得したいとします。私はnew CsvReader(“D:\products.csv”).getRawRecord()メソッドをチェックしていましたが、メソッドパラメータはありません。

+1

ファイルに反して何か問題はありますか? –

+0

それをコード化する必要があります。 openCSVには必要なものすべてがあります。これを行ごとに読み込み、このvalue.equalsIgnoreCase( "23456")のような列の値をテストしてください。 –

+0

これは私が反復したくないということです。私のファイルに1000レコードがある場合、999番目にある行を取得するために、私は穿孔解決ではない998レコードを繰り返す必要があります。 – user2142786

答えて

0
Iterator iterator = CsvReader("D:\\products.csv").Iterator(); 
while(iterator.hasNext()){ 
    if((String[] string = (iterator.next))[0] == 23456) 
     sout("Found the row: " + string[0] + ", " + string[1] + ", " + string[2] + ", " + string[3] + ", " + string[4]); 
} 

とパフォーマンスについてのご心配について:

  1. 1.000要素を持つ、これはまだあなたが1.000.000要素

  2. に到達したとき、心配、あなたはそれが必要以上に道速くなります

    Csvの読み込みを実行したい場合は、IDを格納するパフォーマンスのよい方法を使用する必要があります。新しいIDが作成されるたびにIDを増分してIDを削除しない場合は、そのIDをインデックスとして使用して正しい行を直接取得することができます。

+1

メソッドIterator()は、タイプCsvReaderで未定義です。私は以下のライブラリimport com.csvreader.CsvReaderを使用しています。 import com.csvreader.CsvWriter; – user2142786

+0

Google CsvReaderにはJavaのドキュメントがあります。そこには文字列配列を渡すべきイテレータがあります。 –

+0

コードは正確なコピー貼り付けではなく、理解のためのものとして一緒にスローされました –

関連する問題