Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将字段名应用于ArrayList,然后向该ArrayList添加内容_Java_Field - Fatal编程技术网

Java 如何将字段名应用于ArrayList,然后向该ArrayList添加内容

Java 如何将字段名应用于ArrayList,然后向该ArrayList添加内容,java,field,Java,Field,我想从CSV文件中导入字段名,然后将文件名后的所有数据添加到相应的ArrayList中。我知道如何询问类该字段是否存在以及是否存在,但不知道如何应用该字段的名称并使用.add将元素添加到数组中 请帮忙,这是我学校的项目 try { scanner = new Scanner(new FileInputStream(filename), "UTF-8"); while (scanner.hasNextLine()) { String line = scanner.ne

我想从CSV文件中导入字段名,然后将文件名后的所有数据添加到相应的ArrayList中。我知道如何询问类该字段是否存在以及是否存在,但不知道如何应用该字段的名称并使用.add将元素添加到数组中 请帮忙,这是我学校的项目

try {
    scanner = new Scanner(new FileInputStream(filename), "UTF-8");
    while (scanner.hasNextLine()) {
       String line = scanner.nextLine();
       String[] splitLines = line.split(",");
       Field field = Main.class.getField("splitLines[0]");
       if(ArrayList.class.isAssignableFrom(field.getType())){
          for (int i = 0; i < splitLines.length; i++) {
              /*this is where I want to add all of the Data to the 
                corresponding array*/
          }
        }

      }

      scanner.close();

    } catch (FileNotFoundException | NoSuchFieldException e) {
        System.out.println("File not found " + filename);
    }
试试看{
扫描仪=新扫描仪(新文件输入流(文件名),“UTF-8”);
while(scanner.hasNextLine()){
字符串行=scanner.nextLine();
String[]splitLines=line.split(“,”);
Field=Main.class.getField(“拆分线[0]”);
if(ArrayList.class.isAssignableFrom(field.getType())){
对于(int i=0;i

我希望我可以使用CSV文件的第一个单词并将其转换为类中数组的名称,然后将CSV文件的所有元素添加到数组中。

反射通常不是一个好的解决方案。可能使用映射而不是命名数组

var dataByName = new HashMap<String, List<String>>();
var-dataByName=newhashmap();
然后,在读取并拆分文件中的一行之后

var dataList = new ArrayList<String>();
for (int s = 1; s < splitLines.length; s++) {
    dataList.add(splitLines[s]);
}
dataByName.put(splitLines[0], dataList);
var dataList=newarraylist();
对于(int s=1;s
反射通常不是一个好的解决方案。可能使用映射而不是命名数组

var dataByName = new HashMap<String, List<String>>();
var-dataByName=newhashmap();
然后,在读取并拆分文件中的一行之后

var dataList = new ArrayList<String>();
for (int s = 1; s < splitLines.length; s++) {
    dataList.add(splitLines[s]);
}
dataByName.put(splitLines[0], dataList);
var dataList=newarraylist();
对于(int s=1;s
欢迎来到SO。而且,我建议你通过-嗨,克莱门斯!你能给我们看一个CSV文件的例子吗?getField()方法得到一个在Main.class中声明的字段。。。。这与你的csv文件无关?这是为了解决我们在学校里必须解决的一个问题,我们把一个句子归类为对某人的歧视。我的CSV文件的一个例子是:[种族,非裔美国人,西班牙裔,西班牙人,黑人,高加索人,欧洲人,亚洲人,中国人,印度人,美国人,俄罗斯人,日本人,韩国人]行中的第一个单词是数组列表,我想保存所有单词。而且,我建议你通过-嗨,克莱门斯!你能给我们看一个CSV文件的例子吗?getField()方法得到一个在Main.class中声明的字段。。。。这与你的csv文件无关?这是为了解决我们在学校里必须解决的一个问题,我们把一个句子归类为对某人的歧视。我的CSV文件的一个例子是:[种族、非裔美国人、西班牙人、西班牙人、黑人、白种人、欧洲人、亚洲人、中国人、印度人、美国人、俄罗斯人、日本人、韩国人]行中的第一个单词是ArrayList,我想在intoI之后保存所有单词,我认为这是一个更好的解决方案。我希望我可以用java非常简单地获取变量的名称,然后应用它,但似乎哈希映射一直以来都是解决我问题的更好方法。谢谢你的帮助,我认为这是一个更好的解决方案。我希望我可以用java非常简单地获取变量的名称,然后应用它,但似乎哈希映射一直以来都是解决我问题的更好方法。谢谢你的帮助