【Java】CSVを読み込みMapへ変換する方法
JavaでCSVファイルを読み込み、CSVファイルを編集したい場合があります。
CSVファイルをMap形式で格納することで、プログラム内の処理しやすくします。
例えば「カンマ区切り」などで項目を編集したい場合は、例えば次のようなCSVファイルを読み込みたい場合などです。
読み込むファイル"C:\\eclipse\\workspace\\test.csv" ※Mapのキー値は "番号","内容"とする ↓"C:\\eclipse\\workspace\\test.csv"の内容↓ 01,あああ 02,いいい 03,ううう
以下のように実装すればMapに変換できます。
readLineで読み取った値をsplitで区切り文字で分割させ、for文でキー値と値をセットとして、mapにセットします。
public static Map<String, String> CSVTOMAP(String csv, String[] キー値) { // splitメソッドで文字列を分割して配列に格納 String[] 値 = csv.split(","); Map<String, String> map = new HashMap<>(); for (int i = 0; i < キー値.length; i++ ) { // キー値と値をfor文で回しセットする。 map.put(キー値[i], 値[i]); } return map; }
実際に組んでみると次のようになります。
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class TEST { public static void main(String[] args) throws IOException { try { File file = new File("C:\\eclipse\\workspace\\test.csv"); BufferedReader br = new BufferedReader(new FileReader(file)); String[] MAPKEY = {"番号","内容"}; String line = br.readLine(); while (line != null) { Map<String, String> map = CSVTOMAP(line, MAPKEY); System.out.println(map); line = br.readLine(); } br.close(); } catch (IOException e) { System.out.println(e); } } public static Map<String, String> CSVTOMAP(String csv, String[] キー値) { String[] 値 = csv.split(","); Map<String, String> map = new HashMap<>(); for (int i = 0; i < キー値.length; i++ ) { map.put(キー値[i], 値[i]); } return map; } } // 実行結果 {番号=01, 内容=あああ} {番号=02, 内容=いいい} {番号=03, 内容=ううう}
コメントを残す