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

时间:2014-04-29 21:58:50

标签: java collections hashmap set

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

4 个答案:

答案 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对象创建上传递它。