我有一个具有年龄和名称的csv文件。我想在文件中搜索年龄为30岁的所有人,并显示他们的姓名和年龄。我怎么能用Java做到这一点?
我知道我可以把它读成ArrayList
,我只是不确定该怎么做。
这是我到目前为止所拥有的:
public static void gradeRead(String filename)
{
try{
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
String fileLines;
String[] parts;
while(br.ready())
{
fileLines = br.readLine();
parts = fileLines.split(",");
System.out.println(parts[0] + " " + parts[1];
}
br.close();
}
catch(IOException e)
{
System.out.println("Couldnt Read file"); }
}
我知道如何将其读入字符串数组,但我不知道如何将其添加到ArrayList
然后进行搜索。我怎么能做到这一点?
答案 0 :(得分:1)
我认为最好有一个Person类并在每一行中实例化它(带有年龄和名称)。以及用于读取文件和搜索的PersonCatalog类:
public class PersonCatalog
{
private List<Person> persons = new ArrayList<Person>();
public void readFile(String filePath) throws NumberFormatException, IOException
{
BufferedReader reader = new BufferedReader(new FileReader(new File(filePath)));
String currentLine;
int index = 0;
while((currentLine = reader.readLine()) != null)
{
String[] pair = currentLine.split(",");
if(index != 0)
{
persons.add(new Person(pair[1].trim(),Integer.valueOf(pair[0].trim())));
}
index++;
}
reader.close();
}
public List<Person> searchByAge(int age)
{
List<Person> results = new ArrayList<Person>();
for(Person p : persons)
{
if(p.getAge() == age)
{
results.add(p);
}
}
return results;
}
public static void main(String[] args) throws IOException
{
PersonCatalog personCatalog = new PersonCatalog();
personCatalog.readFile("G:/test.csv");
List<Person> persons = personCatalog.searchByAge(30);
for(Person person : persons)
{
System.out.println(person.getName() + " " + person.getAge());
}
}
}
public class Person
{
private String name;
private Integer age;
public Person(String name, Integer age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public Integer getAge()
{
return age;
}
}
输入:
age, name
11, sam
15, jack
3, nani
30, david
输出:
david 30
答案 1 :(得分:0)
如果您使用的是 Windows操作系统,我建议您使用Type 1 JDBC驱动程序。因为你只想打印记录。但是,如您所知,此驱动程序不支持网络。如果满足所有这些,那么这是一个解决方案。
import java.sql.*;
class csv1
{
public static void main(String args[]) throws Exception
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c=DriverManager.getConnection("jdbc:odbc:google");
Statement s=c.createStatement();
ResultSet rs=s.executeQuery("select * from sample.csv where age=20");
while(rs.next())
{
System.out.println(rs.getObject(1)+" "+rs.getObject(2));
}
s.close();
c.close();
}
}
google 是dsn名称。
注意: sample.csv 必须存在于执行程序的目录中。如果是另一个目录,请提及完整路径。
示例:C:\\sample1.csv
而不是sample1.csv