我创建了一个类,该类具有一个构造函数,该构造函数采用字符串行,并在对数据进行一些处理之后将其转换为对象。
我需要一次将CSV中的一行数据馈入构造函数中,以为文件的每一行创建一个对象。但是,从我所有的搜索中,我无法弄清楚如何创建这些对象,就像我学到的那样,要创建对象就必须命名这些对象。有没有一种方法可以创建对象数组,因此不必命名每个对象?例如,第一行就像Object [0],依此类推?
public class Object{
String Name, Example, Example2;
Object(String data){
//Data manipulation to get into Name Example and Example2 creating an
//object
}
public String getName{
return Name;
}
}
public class ObjectFeed{
//This is where I would open the file and feed it line by line into the
//object class
}
我应该能够在任何行号上使用为Object类创建的getter方法,并且它应该获取该信息。我只是不明白如何将数据输入对象并创建多个对象。
答案 0 :(得分:0)
如果数据来自CSV,则每个单元格都应以逗号分隔,因此您应该能够使用输入字符串data
并将其分割。
这可以像这样完成:
String[] csvList = data.split(",");
然后可以将csvList
的每个元素分配为对象的属性之一,并遍历其所有元素以生成对象列表。
List<YourObject> objects = new List<YourObject>();
// increment i by the how many properties YourObject has
for (int i = 0; i < csvList.length; i += 2) {
YourObject obj = new YourObject();
obj.FirstProperty = csvList[i];
obj.SecondProperty = csvList[i+1];
...
objects.add(obj);
}
答案 1 :(得分:0)
我会做这样的事情:
public void createYourObjects() {
List<String> lines = // however you are reading lines from the CSV file
List<YourObject> objects = new ArrayList<>();
for(String line in lines) {
objects.add(methodB(line);
}
}
public YourObject createYourObjectFrom(String line) {
List<String> columns = line.spilt(",");
return new YourObject(columns.get(0), columns.get(1) ..... columns(n-1)); // where n is the size of the list n-1 is the index of the last item in the list
}
有点伪代码,但我认为它说明了基本思想。通过使用单独的方法构造对象,可以分离关注点,从而将对象列表的创建与CSV文件的结构隔离开。
它还为您提供了提供所需的任何错误或特殊情况处理的地方。
在现实情况下,您可能需要处理不同类型的数据,从String
转换为int
,并且当列为空时。
如果列为空,则将获得较小的列列表,并且您将不得不处理该列。