Java 从iterable集合中删除最小值和最大值

Java 从iterable集合中删除最小值和最大值,java,iterator,Java,Iterator,我有一个方法 public double calculator(Iterable<Integer> userRating) 公共双计算器(Iterable userRating) 我试图实现逻辑,删除最高值和最低值并计算平均值。最终结果应该如下所示(删除mins-2和maxs 15) public void ProperlyCalculates(){ 列表评级=新的ArrayList(); 加上(-2); 加上(-2); 增加(3); 增加(7); 增加(8); 增加(9); 增

我有一个方法

public double calculator(Iterable<Integer> userRating)
公共双计算器(Iterable userRating)
我试图实现逻辑,删除最高值和最低值并计算平均值。最终结果应该如下所示(删除mins-2和maxs 15)

public void ProperlyCalculates(){
列表评级=新的ArrayList();
加上(-2);
加上(-2);
增加(3);
增加(7);
增加(8);
增加(9);
增加(15);
增加(15);
增加(15);
双重评级=评级者。getMovieRating(评级);
资产质量(6.75D,评级,0.0000001D);
我试图创建一个迭代器来循环并添加到我的逻辑中,这让我感到困惑。到目前为止,我已经尝试过了

public double getMovieRating(Iterable<Integer> userRating) {


        Iterator ratings = userRating.iterator();
        int min = Integer.MIN_VALUE;
        int max = Integer.MAX_VALUE;

        while (ratings.hasNext()) {
            Integer val = ratings.next();
            if (val > max){ max = val;}
            if (val < min) {min = val;}  

        }

    }
public-double-getMovieRating(Iterable-userRating){
迭代器评级=userRating.Iterator();
int min=Integer.min\u值;
int max=整数最大值;
while(ratings.hasNext()){
整数val=ratings.next();
如果(val>max){max=val;}
如果(val

但是
Integer val=ratings.next()
抛出了一个
不兼容的类型
错误。如何循环遍历迭代器中的所有值?在这种情况下,是否需要一个私有的内部类?

有两种方法可以解决此问题。或者为
迭代器提供一个类型,如下所示

Iterator<Integer> ratings = userRating.iterator(); // An iterator of type Integer
Integer val = (Integer) ratings.next();

在第一种情况下,您确保由
迭代器返回的每个元素都只属于
Integer
类型。在第二种情况下,您将值强制转换为
Integer
,因为没有类型的
迭代器将默认返回
对象。

有两种方法可以解决此问题m、 或者为
迭代器提供一个类型,如下所示

Iterator<Integer> ratings = userRating.iterator(); // An iterator of type Integer
Integer val = (Integer) ratings.next();

在第一种情况下,您确保由
迭代器返回的每个元素都只属于
Integer
类型。在第二种情况下,您将值强制转换为
Integer
,因为没有类型的
迭代器将默认返回
对象。

有两种方法可以解决此问题m、 或者为
迭代器提供一个类型,如下所示

Iterator<Integer> ratings = userRating.iterator(); // An iterator of type Integer
Integer val = (Integer) ratings.next();

在第一种情况下,您确保由
迭代器返回的每个元素都只属于
Integer
类型。在第二种情况下,您将值强制转换为
Integer
,因为没有类型的
迭代器将默认返回
对象。

有两种方法可以解决此问题m、 或者为
迭代器提供一个类型,如下所示

Iterator<Integer> ratings = userRating.iterator(); // An iterator of type Integer
Integer val = (Integer) ratings.next();

在第一种情况下,您确保由
迭代器返回的每个元素都只属于
Integer
类型。在第二种情况下,您将值强制转换为
Integer
,因为没有类型的
迭代器在默认情况下将返回
对象。

除了@R.J所说的,您还应该D还考虑使用:下一个语法,因为它使这更简单:

public double getMovieRating(Iterable<Integer> userRating) {

    int min = Integer.MIN_VALUE;
    int max = Integer.MAX_VALUE;

    for(Integer rating : userRating) {
        final int val = rating.intValue();
        if (val > max){ max = val;}
        if (val < min) {min = val;}  
    }
}
public-double-getMovieRating(Iterable-userRating){
int min=Integer.min\u值;
int max=整数最大值;
对于(整数评级:userRating){
最终int val=rating.intValue();
如果(val>max){max=val;}
如果(val< /代码> 除了R.J所说的之外,还应该考虑使用:下一个语法,因为它使这更简单:

public double getMovieRating(Iterable<Integer> userRating) {

    int min = Integer.MIN_VALUE;
    int max = Integer.MAX_VALUE;

    for(Integer rating : userRating) {
        final int val = rating.intValue();
        if (val > max){ max = val;}
        if (val < min) {min = val;}  
    }
}
public-double-getMovieRating(Iterable-userRating){
int min=Integer.min\u值;
int max=整数最大值;
对于(整数评级:userRating){
最终int val=rating.intValue();
如果(val>max){max=val;}
如果(val< /代码> 除了R.J所说的之外,还应该考虑使用:下一个语法,因为它使这更简单:

public double getMovieRating(Iterable<Integer> userRating) {

    int min = Integer.MIN_VALUE;
    int max = Integer.MAX_VALUE;

    for(Integer rating : userRating) {
        final int val = rating.intValue();
        if (val > max){ max = val;}
        if (val < min) {min = val;}  
    }
}
public-double-getMovieRating(Iterable-userRating){
int min=Integer.min\u值;
int max=整数最大值;
对于(整数评级:userRating){
最终int val=rating.intValue();
如果(val>max){max=val;}
如果(val< /代码> 除了R.J所说的之外,还应该考虑使用:下一个语法,因为它使这更简单:

public double getMovieRating(Iterable<Integer> userRating) {

    int min = Integer.MIN_VALUE;
    int max = Integer.MAX_VALUE;

    for(Integer rating : userRating) {
        final int val = rating.intValue();
        if (val > max){ max = val;}
        if (val < min) {min = val;}  
    }
}
public-double-getMovieRating(Iterable-userRating){
int min=Integer.min\u值;
int max=整数最大值;
对于(整数评级:userRating){
最终int val=rating.intValue();
如果(val>max){max=val;}
如果(val
可能重复的可能重复的可能重复的hrmm可能重复的可能重复的可能重复的可能重复的可能重复的可能重复的hrmm,这会导致错误
无法解析符号评级
。缺少什么?我缺少评级的类型。我已经更新了示例。hrmm,这会导致错误
无法解析符号评级
。缺少什么?我缺少类型f或评级。我已更新example.hrmm,它给出了一个错误
无法解析符号评级
。缺少什么?我缺少评级的类型。我已更新example.hrmm,它给出了一个错误
无法解析符号评级
。缺少什么?我缺少评级的类型。我已更新了示例。