gpt4 book ai didi

java - 如何格式化Java ArrayList的行和列并调用列或行的数据?

转载 作者:行者123 更新时间:2023-12-02 11:09:32 25 4
gpt4 key购买 nike

我是一个Java初学者,我一直在尝试使用Java从我的计算机读取csv文件并将数据插入到ArrayList中。

public class DataRepository {

public void loadFile(){
ArrayList<String> binsGrade = new ArrayList<String>();
try {
Scanner fileScanner = new Scanner(new File("C:\\Users\\Max\\Desktop\\Grade_SampleData.csv"));
while(fileScanner.hasNextLine()){

binsGrade.add(fileScanner.nextLine());
}

fileScanner.close();

System.out.println(binsGrade);


} catch (FileNotFoundException e){
e.printStackTrace();
}
}
}

下面是我得到的结果:

[name,literature,math,physics,chemistry,biology,history,geology,art,sports, Michael,80,90,82,79,75,70,72,68,95, Amy,85,88,73,79,88,93,90,92,75, Johnson,72,89,81,84,83,72,89,90,82, Bob,80,81,84,89,87,90,71,65,89, Tommy,70,89,79,90,88,73,75,89,91, Rachel,90,91,80,92,87,92,95,97,87, Evonne,78,91,87,88,91,76,74,86,91]

所有记录都在一行中,但我实际上希望它位于单独的行和列中,例如,当我调用 name 时,我可以获得值:Michael、Amy、Johson 等。当我调用时文献中,我可以得到80、85、72、80等等。然后我大概可以用这些数据做一些计算,比如计算平均值,或者得到最高分等等。

虽然我已经在网上搜索了一段时间,但我仍然没有找到实现这一目标的最佳方法。如果您有一分钟的时间,可以分享一下您的想法吗?我们将非常感谢您的帮助。谢谢!

最佳答案

如果你想快速实现一些东西,可以关注Srivenu comment并使用 Map<String, List<String>> 。 Map 的每个条目都将名称作为键,以及所有结果的字符串列表。例如添加迈克尔:

myMap.add("Michael", Arrays.asList({"20", "12", "8", "80"}));

然后创建不同的方法来通过此映射来计算平均值,或找到最大值等

<小时/>

如果您想要一种更面向对象的方法,我建议您创建代表您的数据的对象。首先是一个结果对象,其中包含两个属性,一个作为主题的字符串和一个作为分数的整数。

public class Result {
private String subject;
private int score;

public Result(String s, int i) {
subject = s;
score = i;
}

//Add Setters and Getters
//Add additional method if required
}

其次,有一个代表某人的 Person 对象。它将有两个属性,一个表示名称的字符串和一个结果对象列表。

public class Person {
private String name;
private List<Result> results;

public Person(String s, List<Result> r) {
name = s;
results = r;
}

//Add getters and setters
//Add additional methods if required

/**
* Example of additional method
* This one will return the score for a given subject
**/
public int getScore(String subject) {
Result r = results.get(subject);
return r.getScore();
}

}

第三,创建一个 GroupOfPerson 类,其中包含一个属性,即人员列表。然后这个类将有返回平均值、最大值等的方法......

public class GroupOfPerson {
private List<Person> persons;

public GroupOfPErson(List<Person> p) {
persons = p;
}

/**
* Example of method.
* This one will return the average score for the given subject
**/
public int getAverageForSubject(String subject) {
int average = 0;
for(Person p : persons) {
average += p.getScore(subject);
}
average /= persons.size();
return average;
}

//Add other methods
}

最后,在读取 CSV 文件时,创建相应的对象。

关于java - 如何格式化Java ArrayList的行和列并调用列或行的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50697852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com