用于比较数据集的任何Java集合

我有2个月的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)

创建一个HashMap如下,

  HashMap> studentMap=new HashMap>(); 

Key是学生的姓名,值是他们的商标列表。 ArrayList中的索引0具有每个学生的1月标记,索引1具有每个学生的feb标记并继续(如果您有更多)。

您可以添加以下条目,

  scores=new ArrayList(); scores.add(40); scores.add(80); studentMap.put("John", scores); scores=new ArrayList(); scores.add(61); scores.add(81); studentMap.put("Mary", scores); 

并显示值,

 for(String name : studentMap.keySet()) { ArrayList scoreList=studentMap.get(name); System.out.println("Name : "+name+" Jan Score: "+scoreList.get(0)+" Feb Score : "+scoreList.get(1)); } 

在两者之间,您可以添加逻辑以提高百分比。

您可以将每个数据集存储在Map中(key = student Name,Value = score)。 所以可以有1月的地图和2月的另一个地图。

要计算百分比更改,请执行以下操作:

1)迭代2月地图中的所有元素(说当前学生是stu)

2)在1月地图中搜索学生’stu’的分数。

3)计算百分比变化。

没有内置的Java集合来执行此操作,因为这听起来太具体了。 所以你需要自己继续实施这种比较。 正如Kakarot指出的那样,您可以先使用两个地图,然后自己实施比较。

为此,您可以使用TreeSet并在同一个包中创建另一个类并实现“Comparator Interface”以比较两个对象并在TreeSet对象创建时传递它。