Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 迭代Hashmap的内容并将其划分为类别_Java_Sorting_Hashmap - Fatal编程技术网

Java 迭代Hashmap的内容并将其划分为类别

Java 迭代Hashmap的内容并将其划分为类别,java,sorting,hashmap,Java,Sorting,Hashmap,我有一个代码,它现在有一个名为employee的hashmap,类型为,其中字符串包含员工工作所在部门的名称,而整数包含该员工的年龄我想将每个部门的员工年龄划分为不同的年龄类别(如0-20、20-40等)。我现在的代码是这样的: public void Employeeage() { categoryModel = new CartesianChartModel(); QueryBean o

我有一个代码,它现在有一个名为
employee
hashmap
,类型为
,其中字符串包含员工工作所在部门的名称
,而
整数包含该员工的年龄
我想将每个部门的员工年龄划分为不同的年龄类别(如0-20、20-40等)
。我现在的代码是这样的:

       public void Employeeage()
{         
                categoryModel = new CartesianChartModel(); 




                QueryBean obj = new QueryBean();

                Map<String, Integer> employee = obj.getEmployeeAge();

                System.out.println("After accessing QueryBean");

                // 7 groups for age categories

                ArrayList<Integer> grp1 = new ArrayList<Integer>();
                ArrayList<Integer> grp2 = new ArrayList<Integer>();
                ArrayList<Integer> grp3 = new ArrayList<Integer>();
                ArrayList<Integer> grp4 = new ArrayList<Integer>();
                ArrayList<Integer> grp5 = new ArrayList<Integer>();
                ArrayList<Integer> grp6 = new ArrayList<Integer>();
                ArrayList<Integer> grp7 = new ArrayList<Integer>();

                // for each department s, I want to divide employees into different age catgorie
                for(String s: employee.keySet())
                {
                for(Integer i : employee.get(s))   // Error thrown here that cannot iterate over here
                    {
                    System.out.println("Employee age is :"+ i); 
                    if(i.intValue() > 0 && i.intValue() <= 20 )
                        {
                        grp1.add(i);
                        }
                    else if(i.intValue() > 20  && i.intValue() <= 40 )
                        {
                        grp2.add(i);
                        }
                    else if(i.intValue() > 40 && i.intValue() <= 50 )
                        {
                        grp3.add(i);
                        }
                    else if(i.intValue() > 50 && i.intValue() <= 60 )
                        {
                        grp4.add(i);
                        }
                    else if(i.intValue() > 60 && i.intValue() <= 70 )
                        {
                        grp5.add(i);
                        }
                    else if(i.intValue() > 70 && i.intValue() <= 80 )
                        {
                        grp6.add(i);
                        }
                    else if(i.intValue() > 80) 
                        {
                        grp7.add(i);
                        }
                    }

                int size1 = grp1.size();
                System.out.println("Size 1 value"+size1);
                int size2 = grp2.size();
                System.out.println("Size 2 value"+size2);
                int size3 = grp3.size();
                System.out.println("Size 3 value"+size3);
                int size4 = grp4.size();
                System.out.println("Size 4 value"+size4);
                int size5 = grp5.size();
                System.out.println("Size 5 value"+size5);
                int size6 = grp6.size();
                System.out.println("Size 6 value"+size6);
                int size7 = grp7.size();
                System.out.println("Size 7 value"+size7);
                System.out.print("After inserting into groups");
                ChartSeries emp = new ChartSeries();  

                emp.setLabel("Employees");  

                emp.set("0-20", size1);  
                emp.set("21-40", size2);  
                emp.set("41-50", size3);  
                emp.set("51-60", size4);  
                emp.set("61-70", size5);  
                emp.set("71-80", size6);
                emp.set("80+", size7);

                categoryModel.addSeries(emp);  

            }
}
for (Map.Entry<String, Integer> entry : employee.entrySet()) {
    String s = entry.getKey();
    Integer i = entry.getValue();
    // Rest of code here
}
public void Employeeage()
{         
categoryModel=新的CartesianChartModel();
QueryBean obj=新QueryBean();
Map employee=obj.getEmployeeAge();
System.out.println(“在访问QueryBean之后”);
//7个年龄组
ArrayList grp1=新的ArrayList();
ArrayList grp2=新的ArrayList();
ArrayList grp3=新的ArrayList();
ArrayList grp4=新的ArrayList();
ArrayList grp5=新的ArrayList();
ArrayList grp6=新的ArrayList();
ArrayList grp7=新的ArrayList();
//对于每个部门,我想将员工分为不同的年龄组
for(字符串s:employee.keySet())
{
for(Integer i:employee.get(s))//此处抛出无法在此处迭代的错误
{
System.out.println(“员工年龄:”+i);
如果(i.intValue()>0&&i.intValue()20&&i.intValue()40&&i.intValue()50&&i.intValue()60&&i.intValue()70&&i.intValue()80)
{
grp7.添加(i);
}
}
int size1=grp1.size();
System.out.println(“尺寸1值”+size1);
int size2=grp2.size();
System.out.println(“尺寸2值”+size2);
int size3=grp3.size();
System.out.println(“尺寸3值”+size3);
int size4=grp4.size();
System.out.println(“尺寸4值”+size4);
int size5=grp5.size();
系统输出打印项次(“尺寸5值”+尺寸5);
int size6=grp6.size();
System.out.println(“尺寸6值”+size6);
int size7=grp7.size();
System.out.println(“尺寸7值”+size7);
系统输出打印(“插入组后”);
ChartSeries emp=新的ChartSeries();
emp.setLabel(“员工”);
电磁阀组(“0-20”,尺寸1);
皇帝套装(“21-40”,尺寸2);
皇帝套装(“41-50”,尺寸3);
皇帝套装(“51-60”,尺寸4);
皇帝套装(“61-70”,尺寸5);
皇帝套装(“71-80”,尺寸6);
电磁阀组(“80+”,尺寸7);
分类模型添加系列(emp);
}
}
上面的代码在逻辑上是不完整的,因为我无法找到这样做的方法如何将每个部门的员工划分为不同的年龄组?


更新:我想我的解释不清楚,但我想要的是如何将每个部门的员工划分为不同的年龄类别。我没有提到代码区域之外的for循环中的错误,因为这不是我这里的主要问题。很抱歉,您的问题不太清楚(因此我试图在这里解决错误的问题),但您似乎误用了第二个
循环

 for(String s: employee.keySet()){
     for(Integer i : employee.get(s)) 
         ...
的第一个
循环是正确的,尽管没有它可能的那么有效。问题在于第二个
for
循环:

for(Integer i : employee.get(s))
如果查看联机javadoc,您会看到
get()
返回与传入的键对应的值。因此,在您的例子中,
employee.get
返回一个
Integer
对象。尝试迭代单个
Integer
对象是没有意义的。你可能只是想

Integer i = employee.get(s).
相反

一种可能更有效的方法是迭代
HashMap.entrySet()
。这样,您就可以一次性获得姓名和年龄,而无需再次检查
HashMap
。比如说:

       public void Employeeage()
{         
                categoryModel = new CartesianChartModel(); 




                QueryBean obj = new QueryBean();

                Map<String, Integer> employee = obj.getEmployeeAge();

                System.out.println("After accessing QueryBean");

                // 7 groups for age categories

                ArrayList<Integer> grp1 = new ArrayList<Integer>();
                ArrayList<Integer> grp2 = new ArrayList<Integer>();
                ArrayList<Integer> grp3 = new ArrayList<Integer>();
                ArrayList<Integer> grp4 = new ArrayList<Integer>();
                ArrayList<Integer> grp5 = new ArrayList<Integer>();
                ArrayList<Integer> grp6 = new ArrayList<Integer>();
                ArrayList<Integer> grp7 = new ArrayList<Integer>();

                // for each department s, I want to divide employees into different age catgorie
                for(String s: employee.keySet())
                {
                for(Integer i : employee.get(s))   // Error thrown here that cannot iterate over here
                    {
                    System.out.println("Employee age is :"+ i); 
                    if(i.intValue() > 0 && i.intValue() <= 20 )
                        {
                        grp1.add(i);
                        }
                    else if(i.intValue() > 20  && i.intValue() <= 40 )
                        {
                        grp2.add(i);
                        }
                    else if(i.intValue() > 40 && i.intValue() <= 50 )
                        {
                        grp3.add(i);
                        }
                    else if(i.intValue() > 50 && i.intValue() <= 60 )
                        {
                        grp4.add(i);
                        }
                    else if(i.intValue() > 60 && i.intValue() <= 70 )
                        {
                        grp5.add(i);
                        }
                    else if(i.intValue() > 70 && i.intValue() <= 80 )
                        {
                        grp6.add(i);
                        }
                    else if(i.intValue() > 80) 
                        {
                        grp7.add(i);
                        }
                    }

                int size1 = grp1.size();
                System.out.println("Size 1 value"+size1);
                int size2 = grp2.size();
                System.out.println("Size 2 value"+size2);
                int size3 = grp3.size();
                System.out.println("Size 3 value"+size3);
                int size4 = grp4.size();
                System.out.println("Size 4 value"+size4);
                int size5 = grp5.size();
                System.out.println("Size 5 value"+size5);
                int size6 = grp6.size();
                System.out.println("Size 6 value"+size6);
                int size7 = grp7.size();
                System.out.println("Size 7 value"+size7);
                System.out.print("After inserting into groups");
                ChartSeries emp = new ChartSeries();  

                emp.setLabel("Employees");  

                emp.set("0-20", size1);  
                emp.set("21-40", size2);  
                emp.set("41-50", size3);  
                emp.set("51-60", size4);  
                emp.set("61-70", size5);  
                emp.set("71-80", size6);
                emp.set("80+", size7);

                categoryModel.addSeries(emp);  

            }
}
for (Map.Entry<String, Integer> entry : employee.entrySet()) {
    String s = entry.getKey();
    Integer i = entry.getValue();
    // Rest of code here
}
for(Map.Entry:employee.entrySet()){
字符串s=entry.getKey();
整数i=entry.getValue();
//剩下的代码在这里
}

希望有帮助

您尚未描述上述代码的问题所在。您的编译器是正确的。您不能在
Map.Entry
对象上迭代。@OliCharlesworth我在上面提到过它,现在我在上面的帖子中强调了我的问题。我基本上对每个部门的不同年龄段的员工进行分类有问题顺便说一句,如果您将来提出问题,请具体说明您的问题;这使帮助你变得容易多了。您在代码中对该问题进行了注释,但在代码外没有提及。在代码中找出有问题的地方并不有趣,大多数人可能不会费心。想象一下——如果有人带着一堆代码来找你,只是告诉你“我希望它能这样做,但它不起作用”,找出问题所在可能不会太有趣。我已经更新了上面的帖子,突出了我正在寻求解决方案的问题。你希望每个部门都有一个单独的年龄组吗?您将员工分为不同年龄组的代码在快速浏览时似乎是正确的。但是,您的代码有一个主要问题。根据你所说的
员工
的意思,每个部门只能有一个年龄,因为每个部门的名称正好对应一个
整数
对象是的,对于我想要的每个部门