Java 我猜我是以错误的方式迭代密钥(itr)?

Java 我猜我是以错误的方式迭代密钥(itr)?,java,collections,Java,Collections,这是我用Java写的代码,itr是密钥的迭代器,我在迭代密钥时遇到了一个问题,代码的问题是:我们得到了一个2n个整数的数组,其中这个整数数组中的每一对分别代表恐龙的出生年份和死亡年份。我们要考虑的有效年限范围是[-100000到2005 ]。例如,如果输入为: -80000-79950 20 70 22 60 58 65 1950 2004 这意味着第一只恐龙的出生年份分别为-80000和-79950。同样地,第二只恐龙生活在20到70岁之间,依此类推 我们想知道在同一时期活下来的恐龙数量最多。

这是我用Java写的代码,itr是密钥的迭代器,我在迭代密钥时遇到了一个问题,代码的问题是:我们得到了一个2n个整数的数组,其中这个整数数组中的每一对分别代表恐龙的出生年份和死亡年份。我们要考虑的有效年限范围是[-100000到2005 ]。例如,如果输入为:

-80000-79950 20 70 22 60 58 65 1950 2004

这意味着第一只恐龙的出生年份分别为-80000和-79950。同样地,第二只恐龙生活在20到70岁之间,依此类推

我们想知道在同一时期活下来的恐龙数量最多。给出上面2n个整数的数组,写一个方法来计算它

编写以下方法之一:

C/C++: 发现恐龙(整数[]年)

爪哇: 公共int FindMax恐龙(int[]年)

使用阵列的包;
内特迪诺斯特朗;
迪阿霍夫迪诺国际酒店;
int-dinoBirthAge;
int-currentDinoBirthAge;
国际货币基金组织;
整数计数;
TreeMap dino=新的TreeMap();
List dinos=new ArrayList();
扫描仪sc=新的扫描仪(System.in);
公共无效getDionoAges()
{
System.out.println(“多少只恐龙”);
dinoStrength=sc.nextInt()+1;

对于(int i=1;i我假设您的问题是:

Collection value = dino.values();
Collection key = dino.values();

您使用了两次
dino.values()
;第二次可能是
dino.keys()
。但是,由于您将出生年份放入键中,将死亡年份放入值中,因此可能需要切换这两个值。注意:我没有检查循环中的逻辑是否正确。

我假设您的问题是:

Collection value = dino.values();
Collection key = dino.values();
您正在使用
dino.values()
两次;第二次可能应该是
dino.keys()
。但是,由于您将出生年份放入键中,将死亡年份放入值中,您可能需要切换这两个值。注意:我没有检查循环中的逻辑是否正确。

/* 问题:我们给出了一个2n个整数的数组,其中整数中的每一对分别代表恐龙的出生年份和死亡年。我们希望……的死亡年的范围分别是……我们要考虑的有效年的范围是[-100000到2005 ]。 */

公共int FindMax恐龙(int[]年){

int[]birthDino=newint[years.length];
整数[]死亡数=新整数[年长];
//现在,出生和死亡名单中的死亡包含甚至地方。
对于(int i=0;i/*
问题:我们给出了一个2n个整数的数组,其中整数中的每一对分别代表恐龙的出生年份和死亡年。我们希望……的死亡年的范围分别是……我们要考虑的有效年的范围是[-100000到2005 ]。
*/

公共int FindMax恐龙(int[]年){

int[]birthDino=newint[years.length];
整数[]死亡数=新整数[年长];
//现在,出生和死亡名单中的死亡包含甚至地方。

对于(inti=0;我会回答一点,但我现在可以说:热爱恐龙。你能尝试像这样迭代吗()?我认为同时按值和键迭代是不合适的。另外,这两个集合(值和键)不必按相同的顺序。键将按自然顺序排列。我稍后会回答,但我现在可以说:热爱恐龙。你可以尝试这样迭代吗()?我认为同时按值和键进行迭代是不合适的。另外,这两个集合(值和键)不必按相同的顺序。键将按自然顺序排列。感谢最后一次但仍获得CurrentDinBirtShage=0(第59行)感谢最后一次但仍获得CurrentDinBirtShage=0(第59行)
    int[] birthDino = new int[years.length];
    int[] deathDino=new int[years.length];

      //Now  birth & death list is made in which death contains even place.

       for(int i=0;i<=years.length-2;i=i+2){  
           birthDino[i]=years[i];
           deathDino[i+1]=years[i+1];
          }
     Arrays.sort(birthDino);
     Arrays.sort(deathDino);
   List<Integer> al=new ArrayList<Integer>();//List is need because i need to remove null values from here
       for(int aa: birthDino){
            al.add(aa);
       }
      al.removeAll(Collections.singleton(0));// Removing all positions which contain null values
    // System.out.println(al);
     List<Integer> all=new ArrayList<Integer>();
       for(int aa: deathDino){
         all.add(aa);                             //adding in to the List
        }
     all.removeAll(Collections.singleton(0));

 int  Alive=0,maxDinos=0,LastBornMax=0;
 int b = 0,d=0;

    while( b!=birthDino.length && d!=deathDino.length) {
            if (birthDino[b] < deathDino[d])  {
                  Alive =  Alive + 1;
                  b = b + 1;
                } 
                 else {
                         Alive =  Alive - 1;
                        d = d + 1  ;    
                       }

            if(maxDinos <  Alive){  //checking the values
                maxDinos =  Alive;
                LastBornMax=birthDino[b-1];
                }
       }//while end

    //S N Prasad Rao.
      return maxDinos;
}//end of method