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

用于比较数据集的任何Java集合,java,collections,hashmap,set,Java,Collections,Hashmap,Set,我有两个数据集,有两个月的学生姓名和分数 我需要提供每个学生的二月分数以及他/她的二月分数的百分比变化 我可以用Java集合来做这件事吗 示例数据集: name Jan_分数Feb_分数 约翰40 80 玛丽61 81 吉姆52 82 利兹-84 提姆94- 输出应该是这样的 (姓名:John,2月份分数:80,百分比变化:100) (姓名:Mary,Feb_分数:81,百分比变化:32.76) (姓名:Jim,2月份分数:82,百分比变化:57.69) (姓名:Liz,Feb_分数:84,百

我有两个数据集,有两个月的学生姓名和分数

我需要提供每个学生的二月分数以及他/她的二月分数的百分比变化

我可以用Java集合来做这件事吗

示例数据集:

name Jan_分数Feb_分数
约翰40 80
玛丽61 81
吉姆52 82
利兹-84
提姆94-

输出应该是这样的

(姓名:John,2月份分数:80,百分比变化:100)
(姓名:Mary,Feb_分数:81,百分比变化:32.76)
(姓名:Jim,2月份分数:82,百分比变化:57.69)
(姓名:Liz,Feb_分数:84,百分比变化:不适用)

(名称:Tim,Feb_score:-,百分比变化:N/A)

没有内置的Java集合来执行此操作,因为这听起来太具体了。因此,您需要自己进行这种比较。正如Kakarot指出的,您可以从使用两个地图开始,然后自己实现比较。

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

要计算百分比变化,请执行以下操作:

1) 遍历二月地图中的所有元素(假设当前学生是stu)

2) 在一月地图中搜索学生“斯图”的分数


3) 计算百分比变化。

创建一个哈希映射,如下所示

        HashMap<String, ArrayList<Integer>> studentMap=new HashMap<String, ArrayList<Integer>>();
HashMap studentMap=newhashmap();
Key是学生的名字,value是他们的分数列表。ArrayList中的索引0对每个学生都有1月份的标记,索引1对每个学生都有2月份的标记,并继续(如果您有更多)

您可以按如下方式添加条目:

    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);
scores=newarraylist();
分数。加(40);
分数。加(80);
学生地图。放置(“约翰”,分数);
分数=新的ArrayList();
增加(61);
加(81);
学生地图。放置(“玛丽”,分数);
并显示值

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));
    }
for(字符串名称:studentMap.keySet())
{
ArrayList scoreList=studentMap.get(name);
System.out.println(“名称:“+Name+”一月分数:“+scoreList.get(0)+”二月分数:“+scoreList.get(1));
}

在这两者之间,您可以添加用于百分比改进的逻辑。

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