Java 从csv文件读取时,ArrayList中仅缺少第一项

Java 从csv文件读取时,ArrayList中仅缺少第一项,java,arraylist,Java,Arraylist,我尝试从CSV文件中读取字符串并将其存储到ArrayList。但是当搜索数组列表中第一项的索引时,它返回-1。或者,当我试图检查给定字符串和ArrayList的第一个元素是否相等时,equals方法不起作用 这是我的密码: class Database<T>{ ArrayList<String> firstLine = new ArrayList<>(); ArrayList<ArrayList<T>> veri = n

我尝试从CSV文件中读取字符串并将其存储到
ArrayList
。但是当搜索
数组列表中第一项的索引时,它返回-1。或者,当我试图检查给定字符串和
ArrayList
的第一个元素是否相等时,equals方法不起作用

这是我的密码:

class Database<T>{
    ArrayList<String> firstLine = new ArrayList<>();
    ArrayList<ArrayList<T>> veri = new ArrayList<ArrayList<T>>();
    public Database(){}
    public Database(String dosyaIsmi) {
        Scanner in = null;
        Scanner lineT = null;
        try {
            in = new Scanner(new File(dosyaIsmi));
            lineT = new Scanner(in.nextLine()).useDelimiter(";");
            while(lineT.hasNext()) {
                String StringObj = lineT.next();
                firstLine.add(StringObj);
            }
            while(in.hasNextLine()) {
                ArrayList<T> temp = new ArrayList<>();
                lineT = new Scanner(in.nextLine()).useDelimiter(";");
                if(lineT.hasNextInt()) {
                    while(lineT.hasNext()) {
                        if(lineT.hasNextInt()) {
                            Integer intObj = lineT.nextInt();
                            temp.add((T) intObj);
                        }
                        else
                            throw new FileNotFoundException();
                    }
                }
                else if(lineT.hasNextDouble()) {
                    while(lineT.hasNext()) {
                        if(lineT.hasNextDouble()) {
                            Double doubleObj = lineT.nextDouble();
                            temp.add((T) doubleObj);
                        }
                        else
                            throw new FileNotFoundException();
                    }
                }
                else {
                    while(lineT.hasNext()) {
                        if(lineT.hasNextInt())
                            throw new FileNotFoundException();
                        else if(lineT.hasNextDouble())
                            throw new FileNotFoundException();
                        else {
                            String stringObj = lineT.next();
                            temp.add((T) stringObj);
                        }
                    }
                }
                veri.add(temp);
            }
            in.close();
            lineT.close();
        }
        catch(FileNotFoundException e) {
            veri = new ArrayList<ArrayList<T>>();
            System.out.println("Dosya ile ilgili bir hata olustu.");
        }
        catch(IOException e) {
            System.out.println("Dosya ile ilgili bir hata olustu.");
        }
    }

    public Database join(Database second, String column_name){
        Database newObj = new Database();
        for(int i=0; i<firstLine.size(); i++)
        System.out.print(firstLine.get(i));
        int firstIndex = firstLine.indexOf(column_name);
        int secondIndex = second.firstLine.indexOf(column_name);
    }
}
类数据库{
ArrayList firstLine=新的ArrayList();
ArrayList veri=新的ArrayList();
公共数据库(){}
公共数据库(字符串dosyaIsmi){
扫描仪输入=空;
扫描仪lineT=null;
试一试{
in=新扫描仪(新文件(dosyaIsmi));
lineT=新扫描仪(in.nextLine()).useDelimiter(;);
while(lineT.hasNext()){
字符串StringObj=lineT.next();
firstLine.add(StringObj);
}
while(在.hasNextLine()中){
ArrayList temp=新的ArrayList();
lineT=新扫描仪(in.nextLine()).useDelimiter(;);
if(lineT.hasNextInt()){
while(lineT.hasNext()){
if(lineT.hasNextInt()){
整数intObj=lineT.nextInt();
温度添加((T)到BJ);
}
其他的
抛出新的FileNotFoundException();
}
}
else if(lineT.hasNextDouble()){
while(lineT.hasNext()){
if(lineT.hasNextDouble()){
Double doubleObj=lineT.nextDouble();
温度添加((T)双OBJ);
}
其他的
抛出新的FileNotFoundException();
}
}
否则{
while(lineT.hasNext()){
if(lineT.hasNextInt())
抛出新的FileNotFoundException();
else if(lineT.hasNextDouble())
抛出新的FileNotFoundException();
否则{
字符串stringObj=lineT.next();
温度添加((T)stringObj);
}
}
}
验证添加(温度);
}
in.close();
lineT.close();
}
catch(filenotfounde异常){
veri=newarraylist();
System.out.println(“Dosya ile ilgili bir hata olustu.”);
}
捕获(IOE异常){
System.out.println(“Dosya ile ilgili bir hata olustu.”);
}
}
公共数据库联接(数据库第二,字符串列名称){
数据库newObj=新数据库();

对于(int i=0;i列_name变量是什么?它返回-1,因为它找不到列_name变量的值:*@返回指定子字符串*或{@code-1}第一次出现的索引如果没有出现这种情况。我的csv文件中有3列。第一列是:PLAYER,第二列是:POSITION,第三列是:TEAM。所以第一行arraylist是-->[“PLAYER”,“POSITION”,“TEAM”]如果我这样调用join方法-->join(secObj,“POSITION”),firstindex变量将变为1。但是如果我像-->join(secObj,“PLAYER”)那样调用join方法,firstindex变量将变为1,第一个索引变量变为-1而不是0。