Java 从csv文件读取时,ArrayList中仅缺少第一项
我尝试从CSV文件中读取字符串并将其存储到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
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。