我有两个月的2个数据集,包含学生姓名和分数。
我需要为每个学生提供2月份分数,并根据他/她的费用分数提供百分比变化。
我可以使用Java集合吗?
样本数据集:
name Jan_score Feb_score
John 40 80
Mary 61 81
Jim 52 82
Liz - 84
Tim 94 -
输出应该是这样的
(姓名:John,Feb_score:80,变化百分比:100)
(姓名:Mary,Feb_score:81,变化百分比:32.76)
(姓名:Jim,Feb_score:82,变化百分比:57.69)
(姓名:Liz,Feb_score:84,变化百分比:N / A)
(姓名:Tim,Feb_score: - ,变化百分比:N / A)
答案 0 :(得分:3)
按如下方式创建HashMap,
HashMap<String, ArrayList<Integer>> studentMap=new HashMap<String, ArrayList<Integer>>();
Key是学生的姓名,值是他们的商标列表。 ArrayList中的索引0具有每个学生的1月标记,索引1具有每个学生的feb标记并继续(如果您有更多)。
您可以添加以下条目,
scores=new ArrayList<Integer>();
scores.add(40);
scores.add(80);
studentMap.put("John", scores);
scores=new ArrayList<Integer>();
scores.add(61);
scores.add(81);
studentMap.put("Mary", scores);
要显示值,
for(String name : studentMap.keySet())
{
ArrayList<Integer> scoreList=studentMap.get(name);
System.out.println("Name : "+name+" Jan Score: "+scoreList.get(0)+" Feb Score : "+scoreList.get(1));
}
在两者之间,您可以添加逻辑以提高百分比。
答案 1 :(得分:1)
没有内置的Java集合来执行此操作,因为这听起来太具体了。所以你需要自己继续实施这种比较。正如Kakarot指出的那样,您可以先使用两个地图,然后自己实施比较。
答案 2 :(得分:1)
您可以将每个数据集存储在Map中(key = student Name,Value = score)。所以可以有1月的地图和2月的另一个地图。
要计算百分比更改,请执行以下操作:
1)迭代2月地图中的所有元素(说当前学生是stu)
2)搜索学生的成绩&#39; stu&#39;一月地图。
3)计算百分比变化。
答案 3 :(得分:1)
为此,您可以使用TreeSet并在同一个包中创建另一个类并实现&#34; Comparator Interface&#34;用于比较两个对象并在TreeSet对象创建上传递它。