如何在inRange中实现arrayList <integer>(int bound1,int bound2)

时间:2016-11-15 14:08:30

标签: java arraylist

我是编码的新手,我对这个问题感到非常难过。

类ageRecord有一个类型为Integer的类ArrayList的私有成员存储,一个构造函数和公共方法inRange,reverse和mostFrequentAge。

构造函数使用一系列10个随机值0和1000来初始化ArrayList实例变量存储。

public class AgeRecord{

 private ArrayList<Integer> storage;

 public AgeRecord(){
}

 public int inRange(int bound1, int bound2){
   // my working so far 
   int count = 0; 
   for(int i=0; i<storage.size; i++){
     if( bound1 > storage[i] && bound2 < storage[i])
         count++;
}
    return count;

}

public void reverse(){
}

public int mostFrequentAge(){

}

但是,我假设我已经初始化了AgeRecord类的对象ageRecord,其存储包含 76,15,5,47,22,5,33

我正在尝试实现inRange类型为int的方法,该方法返回存储中大于或等于boubd1且小于或等于bound2的值的数量

例如inRange( 15,35 )应返回 3 ,因为 15,22和33 是范围[>中的唯一值15,35 ]

3 个答案:

答案 0 :(得分:1)

Java8 one-liner:

public int inRange(int bound1, int bound2){
  return storage.stream().filter(i -> i >= bound1 && i <= bound2).count();
}

filter只是过滤,顾名思义,你给它一个条件(谓词)(比如if)并且它“抛弃”所有不满足它的对象,在这种情况下,它会丢弃>=而不是bound1<=而不是bound2的所有数字。

答案 1 :(得分:0)

public int inRange(int bound1, int bound2) {
    int count = 0;
    for (int i : storage) {
        if (i >= bound1 && i <= bound2) {
            count++;
        }
    }
    return count;
}

应该这样做。

答案 2 :(得分:-1)

仅限金额:

int counter=0;
        for(int i=0;i< storage.size();i++){
            if(storage.get(i)<=bound2&&storage.get(i)>=bound1){
                c++;
            }
        } 
   return c;

如果值在边界内,则计数器增加,然后返回