NAME,MOBILE,CITY,EMAIL
Alfreds,123566X,德里,abc@gmail.com
我有一个只有两行的文件,第一行是头,第二行是值。文件名中只有两个文件是固定的,而MOBILE其他文件则不是固定的,比如文件可能是(NAME、MOBILE、PRODUCT(或可能是(NAME、MOBILE、SUMMURY、ABC、XYZ(等。
我想将此文件映射到实体类
public class MyPojo{
private String NAME;
private int MOBILE;
private ???
//getter and setter
}
任何帮助都非常感谢。建议我任何解决方案,我该怎么做。请帮忙。提前谢谢。编程界的新手。
File file=new File("file.csv");
FileReader fr=new FileReader(file);
BufferedReader br=new BufferedReader(fr);
String [] line1 = br.readLine().split(",");
String [] line2 = br.readLine().split(",");
您需要在逗号处拆分每个字符串,因此请使用string.split(https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-(。阅读文档告诉您传递一个";regex";用于分隔符。您可以在这里阅读更多关于正则表达式的内容,但要只匹配逗号,您可以使用字面逗号。
String header, data;
// Read file into the above strings
String[] headings = header.split(",");
String[] fields = data.split(",");
现在你需要把这个输入你的课堂。创建数据的HashMap并将其传递给Pojo:的构造函数
import java.util.HashMap;
import java.util.Map;
// Math.min selects the smaller of two values
int nItems = Math.min(headings.length, fields.length);
Map<String,String> map = new HashMap<String,String>(nItems);
// Start at the third item
for (int i = 2; i < nItems; i++) {
map.put(headings[i], fields[i]);
}
Pojo pojo = new Pojo(fields[0], fields[1], map);
然后,您只需要在Pojo上使用一个构造函数,该构造函数接受参数(String name, String mobile, Map<String,String> extraData)
。
class Pojo {
String name, mobile;
Map<String,String> extraData;
public Pojo(String name, String mobile, Map<String,String> extraData) {
this.name = name;
this.mobile = mobile;
this.extraData = new HashMap<String,String>(extraData);
}
// getters/setters....
}