C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: java CSVファイルからクラス配列に格納したい


(過去ログ 60 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■34318 / inTopicNo.1)  java CSVファイルからクラス配列に格納したい
  
□投稿者/ まか (1回)-(2009/03/25(Wed) 18:44:36)

分類:[Java] 

初心者です。
CSVファイルからデータを貰って↓クラスの配列に格納したいのですが、
良くわかりません。

public class Friend{
int age;
String name;
String hobby;
}


ArrayList<Friend> list = new ArrayList<Friend>();
//文字列取得
ss = sc.nextLine();
//文字列を分解
StringTokenizer str = new StringTokenizer(ss,",");

この後、add を使って各要素に格納したいのですが。。
list.age.add(str.nextToken()); とやって見たのですが無理でした。

なにか良い方法はないでしょうか?

引用返信 編集キー/
■34320 / inTopicNo.2)  Re[1]: java CSVファイルからクラス配列に格納したい
□投稿者/ pluvia (6回)-(2009/03/25(Wed) 21:04:16)
No34318 (まか さん) に返信

こんばんは。

> //文字列取得 
> ss = sc.nextLine(); 

コードの前半が省略されていますが、
変数ssには "16,名前,趣味" のような文字列が入ると想定してよろしいでしょうか。
そうであれば、「list.age.add(str.nextToken());」の部分は次のように書けるかと思います。

Friend friend = new Friend();
friend.age = Integer.parseInt(str.nextToken());
friend.name = str.nextToken();
friend.hobby = str.nextToken();
list.add(friend);

引用返信 編集キー/
■34321 / inTopicNo.3)  Re[2]: java CSVファイルからクラス配列に格納したい
□投稿者/ 情報共有 (1回)-(2009/03/25(Wed) 22:53:54)
情報共有
http://www.javaroad.jp/bbs/answer.jsp?q_id=2009032518303238
引用返信 編集キー/
■34330 / inTopicNo.4)  Re[3]: java CSVファイルからクラス配列に格納したい
□投稿者/ επιστημη (1848回)-(2009/03/26(Thu) 09:01:12)
επιστημη さんの Web サイト
こんなんでえぇのかの。

--- foo.java ---
import java.io.*;
import java.util.*;

class Student {
  public int studentNum;
  public String name;
  public String hobby;
  static Student fromCSV(String line) {
    StringTokenizer tokenizer = new StringTokenizer(line,",");
    Student result = new Student();
    result.studentNum = Integer.parseInt(tokenizer.nextToken());
    result.name       = tokenizer.nextToken();
    result.hobby      = tokenizer.nextToken();
    return result;
  }
}

public class foo {

  static ArrayList<Student> readCSV(String path) throws Exception {
    ArrayList<Student> result = new ArrayList<Student>();
    BufferedReader reader = new BufferedReader(new FileReader(path));
    while ( reader.ready() ) {
      result.add(Student.fromCSV(reader.readLine()));
    }
    reader.close();
    return result;
  }

  public static void main(String[] args) {
    try {
      for ( Student s : readCSV(args[0]) ) {
        System.out.printf("#%d: %s (%s)\n", s.studentNum, s.name, s.hobby);
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}

--- foo.csv ---
1,episteme,C++
2,naka,C#
3,janne,VB
4,hatsune,Oracle
5,nagise,Java

--- java foo foo.csv ---
#1: episteme (C++)
#2: naka (C#)
#3: janne (VB)
#4: hatsune (Oracle)
#5: nagise (Java)

引用返信 編集キー/
■34334 / inTopicNo.5)  Re[4]: java CSVファイルからクラス配列に格納したい
□投稿者/ 凪瀬 (98回)-(2009/03/26(Thu) 10:06:04)
No34330 (επιστημη さん) に返信
> こんなんでえぇのかの。

業務とかで使う場合はカンマやダブルクォートのエスケープが入ってくるんでもうちょっと面倒なんですよね…。
@ITにもまんまな記事があるんだけどエスケープは割愛されてるなぁ。
http://www.atmarkit.co.jp/fjava/javatips/063java003.html

プログラムを勉強している人で自分で処理を書けるようになりたいというのでなければ
既存のものとか使えばいいんじゃないですかね。
http://www63.tok2.com/home2/jd4/JavaCSV.html
http://www.wakhok.ac.jp/~tomoharu/Java/csv/
引用返信 編集キー/
■34335 / inTopicNo.6)  Re[5]: java CSVファイルからクラス配列に格納したい
□投稿者/ επιστημη (1850回)-(2009/03/26(Thu) 10:09:09)
επιστημη さんの Web サイト
> 業務とかで使う場合はカンマやダブルクォートのエスケープが入ってくるんでもうちょっと面倒なんですよね…。

御意。モノによっちゃ改行を含んでたりもするんで"一行ずつ読んで"があかんかったり orz

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -